I dit tilfælde ser det ud til, at fordi du bruger @comments.to_sql
du trækker den forberedte erklæring ind i dit undervalg uden at indsætte parameteren for den. Du kan prøve bare at inkludere kommentardata som dette:
@comments = current_clinician.comments.select('ON (patient_id) *').uniq.order("patient_id, created_at DESC").include(:comment)
@comment_list = @comments.include(:comment)
Dette problem ser også ud til at komme fra den måde, de forberedte erklæringer er bygget i Rails og kan være forårsaget af begge problemer i Rails selv (Rails problem #15920 , som er blevet rettet i Rails 4.2) eller af problemer med forskellige ædelstene, der hjælper med at generere forespørgsler (eksempel:Rails issue #20236 ) eller endda ved den måde, du definerer dine modeltilknytninger på (Rails problemer #12852 ).
Det er muligt ligefrem at deaktivere forberedte udsagn ved at tilføje et direktiv til din database.yml
fil:
production:
adapter: postgresql
database: prod_dbname
username: prod_user
password: prod_pass
prepared_statements: false
Men først vil du måske tjekke og sikre dig, at du ikke bruger unødvendige parametre i dine modeltilknytninger som denne:
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
...hvilket bare skulle udelade foreign_key
, sådan her:
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