In jouw geval lijkt het erop dat omdat je de @comments.to_sql
. gebruikt je trekt dat voorbereide statement naar je subselect zonder de parameter ervoor in te voeren. Je kunt proberen om de reactiegegevens als volgt op te nemen:
@comments = current_clinician.comments.select('ON (patient_id) *').uniq.order("patient_id, created_at DESC").include(:comment)
@comment_list = @comments.include(:comment)
Dit probleem lijkt ook voort te komen uit de manier waarop de voorbereide instructies zijn ingebouwd in Rails en kan worden veroorzaakt door problemen binnen Rails zelf (Rails-probleem #15920 , die is opgelost in Rails 4.2) of door problemen met verschillende edelstenen die helpen bij het genereren van zoekopdrachten (bijvoorbeeld:Rails-probleem #20236 ) of zelfs door de manier waarop u uw modelassociaties definieert (Rails-problemen #12852 ).
Het is mogelijk om voorbereide instructies volledig uit te schakelen door een instructie toe te voegen aan uw database.yml
bestand:
production:
adapter: postgresql
database: prod_dbname
username: prod_user
password: prod_pass
prepared_statements: false
Maar eerst wilt u misschien controleren en ervoor zorgen dat u geen onnodige parameters gebruikt in uw modelassociaties zoals deze:
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
...die gewoon foreign_key
moet weglaten , zoals dit:
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