为什么我遇到复杂情况的错误?

时间:2013-10-26 05:17:56

标签: ruby-on-rails ruby-on-rails-3 activerecord

我想检索包含特定关键字的所有评论 但它也必须是积极的用户评论 可以通过user_ids = User.all检索活动用户 所以我这样编码但是我得到了错误。我该如何解决这个问题?

user_ids = User.all
commentable = User.base_class.name.to_s
@comments = Comment.where('user_id=? AND commentable_type=? AND body like ?', user_ids, commentable, "%"+params[:search]+"%").order('created_at DESC').page(params[:page]).per(10)      

错误消息

Mysql2::Error: Operand should contain 1 column(s)

2 个答案:

答案 0 :(得分:1)

你的user_ids是一个数组。在查询中使用IN代替=。

@comments = Comment.where('user_id IN (?) AND commentable_type=? AND body like ?', user_ids.map(&:id), commentable, "%"+params[:search]+"%").order('created_at DESC').page(params[:page]).per(10)

答案 1 :(得分:0)

user_ids = User.pluck(:id)
commentable = User.base_class.name.to_s
@comments = Comment.where('user_id IN (?) AND commentable_type = ? AND body like ?', user_ids, commentable, "%"+params[:search]+"%").order('created_at DESC').page(params[:page]).per(10)

以上查询将为您提供所需的结果