Ve vašem případě se zdá, že proto, že používáte @comments.to_sql
vytahujete tento připravený příkaz do svého podvýběru, aniž byste pro něj vnesli parametr. Můžete zkusit zahrnout data komentářů takto:
@comments = current_clinician.comments.select('ON (patient_id) *').uniq.order("patient_id, created_at DESC").include(:comment)
@comment_list = @comments.include(:comment)
Zdá se také, že tento problém pochází ze způsobu, jakým jsou připravená prohlášení sestavena v Rails, a mohl by být způsoben buď problémy v samotném Rails (problém Rails #15920 , který byl opraven v Rails 4.2) nebo problémy s různými drahokamy, které pomáhají generovat dotazy (příklad:Problém Rails #20236 ) nebo dokonce tím, jak definujete své přidružení modelu (problémy s kolejnicemi #12852 ).
Připravené příkazy je možné rovnou deaktivovat přidáním direktivy do database.yml
soubor:
production:
adapter: postgresql
database: prod_dbname
username: prod_user
password: prod_pass
prepared_statements: false
Nejprve však možná budete chtít zkontrolovat a ujistit se, že ve svých přidruženích k modelu nepoužíváte zbytečné parametry, jako je tento:
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
...který by měl vynechat foreign_key
, takto:
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