W twoim przypadku wydaje się, że ponieważ używasz @comments.to_sql
przeciągasz tak przygotowaną instrukcję do swojej podselekcji bez wprowadzania dla niej parametru. Możesz spróbować po prostu dołączyć dane komentarzy w ten sposób:
@comments = current_clinician.comments.select('ON (patient_id) *').uniq.order("patient_id, created_at DESC").include(:comment)
@comment_list = @comments.include(:comment)
Ten problem wydaje się również wynikać ze sposobu, w jaki przygotowane instrukcje są budowane w Rails i mogą być spowodowane przez problemy w samych Railsach (problem Rails #15920 , który został naprawiony w Rails 4.2) lub przez problemy z różnymi klejnotami, które pomagają generować zapytania (przykład:Rails issue #20236 ) lub nawet przez sposób definiowania skojarzeń modeli (problemy z Railsami #12852 ).
Możliwe jest po prostu całkowite wyłączenie przygotowanych instrukcji, dodając dyrektywę do pliku database.yml
plik:
production:
adapter: postgresql
database: prod_dbname
username: prod_user
password: prod_pass
prepared_statements: false
Ale najpierw możesz chcieć sprawdzić i upewnić się, że nie używasz niepotrzebnych parametrów w skojarzeniach modeli w następujący sposób:
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
...co powinno po prostu pominąć foreign_key
, tak:
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