我试图创建一个唯一的患者谁留下了评论,以病人谁留下最新的评论第一的名单。ProtocolViolation:错误:绑定消息提供0参数,但准备语句“”需要1
这是我的Ruby .erb代码来创建列表:
@comment_list.order("created_at desc").each_with_index do |comment, index|
@comment_list在控制器中定义为:
@comments = current_clinician.comments.select('ON (patient_id) *').uniq
@comments = @comments.order("patient_id, created_at DESC")
@comment_list = Comment.select('*').from("(#{@comments.to_sql}) sub")
我得到一个ActiveRecord :: StatementInvalid消息:
PG::ProtocolViolation: ERROR: bind message supplies 0 parameters, but prepared statement "" requires 1 : SELECT * FROM (SELECT DISTINCT ON (patient_id) * FROM "comments" WHERE "comments"."clinician_id" = $1 ORDER BY patient_id, created_at DESC) sub ORDER BY created_at desc
我试图按照24619117上的答案,我的输出是一个组合这和答案顶部29660396。
$ rails -v
Rails 4.1.8
$ ruby -v
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-darwin14]
$ psql --version
psql (PostgreSQL) 9.4.1
我初出茅庐与PostgreSQL的,问题的部分是,我使用Ruby on Rails的获得SQL和方法并不简单。我一直在使用http://api.rubyonrails.org/classes/ActiveRecord/QueryMethods.html#method-i-from
建议,请