Trong trường hợp của bạn, có vẻ như do bạn đang sử dụng @comments.to_sql
bạn đang kéo câu lệnh đã chuẩn bị đó vào lựa chọn con của mình mà không đưa vào tham số cho nó. Bạn có thể thử chỉ bao gồm dữ liệu nhận xét như sau:
@comments = current_clinician.comments.select('ON (patient_id) *').uniq.order("patient_id, created_at DESC").include(:comment)
@comment_list = @comments.include(:comment)
Vấn đề này dường như cũng đến từ cách mà các câu lệnh đã chuẩn bị được xây dựng trong Rails và có thể do một trong hai vấn đề trong chính Rails gây ra (Vấn đề Rails # 15920 , đã được khắc phục trong Rails 4.2) hoặc do các vấn đề với các viên ngọc khác nhau giúp tạo truy vấn (ví dụ:Rails issue # 20236 ) hoặc thậm chí bằng cách bạn xác định các liên kết mô hình của mình (Các vấn đề về đường ray # 12852 ).
Có thể vô hiệu hóa hoàn toàn các câu lệnh đã chuẩn bị bằng cách thêm một lệnh vào database.yml
của bạn tệp:
production:
adapter: postgresql
database: prod_dbname
username: prod_user
password: prod_pass
prepared_statements: false
Nhưng trước tiên, bạn có thể muốn kiểm tra và đảm bảo rằng bạn không sử dụng các tham số không cần thiết trong các liên kết mô hình của mình như sau:
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
... chỉ nên bỏ đi foreign_key
, như thế này:
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