Nel tuo caso sembra che tu stia usando @comments.to_sql
stai inserendo quella dichiarazione preparata nella tua sottoselezione senza inserire il parametro per essa. Puoi provare semplicemente a includere i dati dei commenti in questo modo:
@comments = current_clinician.comments.select('ON (patient_id) *').uniq.order("patient_id, created_at DESC").include(:comment)
@comment_list = @comments.include(:comment)
Questo problema sembra derivare anche dal modo in cui le istruzioni preparate sono costruite in Rails e potrebbe essere causato da entrambi i problemi all'interno di Rails stesso (problema di Rails #15920 , che è stato risolto in Rails 4.2) o da problemi con varie gemme che aiutano a generare query (esempio:problema Rails #20236 ) o anche dal modo in cui definisci le tue associazioni di modelli (Rails issues #12852 ).
È possibile semplicemente disabilitare completamente le istruzioni preparate aggiungendo una direttiva al tuo database.yml
file:
production:
adapter: postgresql
database: prod_dbname
username: prod_user
password: prod_pass
prepared_statements: false
Ma prima, potresti voler controllare e assicurarti di non utilizzare parametri non necessari nelle associazioni di modelli come questa:
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
...che dovrebbe semplicemente omettere foreign_key
, in questo modo:
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