sql >> Base de Datos >  >> RDS >> PostgreSQL

ProtocolViolation:ERROR:el mensaje de enlace proporciona 0 parámetros, pero la declaración preparada requiere 1

En su caso, parece que porque está utilizando @comments.to_sql está extrayendo esa declaración preparada en su subselección sin traer el parámetro para ello. Puede intentar simplemente incluir los datos del comentario de esta manera:

  @comments = current_clinician.comments.select('ON (patient_id) *').uniq.order("patient_id, created_at DESC").include(:comment)
  @comment_list = @comments.include(:comment)

Este problema también parece provenir de la forma en que las declaraciones preparadas se crean en Rails y podría deberse a problemas dentro de Rails (problema de Rails #15920 , que se solucionó en Rails 4.2) o por problemas con varias gemas que ayudan a generar consultas (ejemplo:Problema de Rails #20236 ) o incluso por la forma en que define sus asociaciones de modelos (problemas de Rails #12852 ).

Es posible deshabilitar completamente las declaraciones preparadas agregando una directiva a su database.yml archivo:

production:
  adapter: postgresql
  database: prod_dbname
  username: prod_user
  password: prod_pass
  prepared_statements: false

Pero primero, es posible que desee verificar y asegurarse de que no está utilizando parámetros innecesarios en sus asociaciones de modelos como esta:

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

... que debería omitir foreign_key , así:

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