Във вашия случай изглежда, че защото използвате @comments.to_sql
вие изтегляте този подготвен израз във вашия подизбор, без да въвеждате параметъра за него. Можете да опитате просто да включите данните за коментара по този начин:
@comments = current_clinician.comments.select('ON (patient_id) *').uniq.order("patient_id, created_at DESC").include(:comment)
@comment_list = @comments.include(:comment)
Този проблем също изглежда идва от начина, по който подготвените изрази са изградени в Rails и може да бъде причинен от проблеми в самия Rails (проблем с Rails #15920 , което е коригирано в Rails 4.2) или от проблеми с различни скъпоценни камъни, които помагат за генериране на заявки (пример:проблем с Rails #20236 ) или дори по начина, по който дефинирате асоциациите на вашите модели (проблеми с Rails #12852 ).
Възможно е просто да деактивирате подготвените изрази, като добавите директива към вашия database.yml
файл:
production:
adapter: postgresql
database: prod_dbname
username: prod_user
password: prod_pass
prepared_statements: false
Но първо може да искате да проверите и да се уверите, че не използвате ненужни параметри във вашите асоциации на модели като това:
class DashboardTab < ActiveRecord::Base
has_many :dashboard_tab_feeds, foreign_key: :dashboard_tab_id, dependent: :destroy
has_many :social_feeds, through: :dashboard_tab_feeds
end
class DashboardTabFeed < ActiveRecord::Base
belongs_to :social_feed
belongs_to :dashboard_tab
end
class SocialFeed < ActiveRecord::Base
has_many :dashboard_tab_feeds, foreign_key: :social_feed_id, dependent: :destroy
end
...което просто трябва да остави foreign_key
, като това:
class DashboardTab < ActiveRecord::Base
has_many :dashboard_tab_feeds, dependent: :destroy
has_many :social_feeds, through: :dashboard_tab_feeds
end
class DashboardTabFeed < ActiveRecord::Base
belongs_to :social_feed
belongs_to :dashboard_tab
end
class SocialFeed < ActiveRecord::Base
has_many :dashboard_tab_feeds, dependent: :destroy
end