0

我想检索所有包含特定关键字的评论。
但它也必须是活跃的用户评论。
活动用户可以通过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)
4

2 回答 2

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)
于 2013-10-26T05:24:30.340 回答
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)

上面的查询会给你想要的结果

于 2013-10-26T05:29:23.720 回答