SQL“in”的相应ActiveRecord“Where”语法是什么?

时间:2015-05-26 16:46:32

标签: ruby-on-rails activerecord

我有以下一段代码被破坏了:

 //user_posts_id is an array of integer values
    @comment_notifications = Comment.where(["author_id != ? and post_id in ?", current_user.id, user_posts_id])

这是错误的一部分:

  

PG :: SyntaxError:ERROR:语法错误在“1”处或附近第1行:...   “comments”WHERE(author_id!= 8和post_id in 1,4,8,9,2,... ^:   SELECT“comments”。* FROM“comments”WHERE(author_id!= 8和post_id   在1,4,8,9,2,3)

由于“posts_id”和“user_posts_id”的第二个条件,它似乎不起作用。我认为,“!=”也会让事情变得复杂一些。编写此ActiveRecord查询的适当方法是什么?

感谢任何建议!感谢。

2 个答案:

答案 0 :(得分:2)

问题是你发送没有parens的列表。

 @comment_notifications = Comment.where(["author_id != ? and post_id in (?)", , current_user.id, user_posts_id])

如果您查看错误,它会告诉您问题在“1”附近,这是您列表中的第一项。

答案 1 :(得分:2)

你也可以用其他方式在Rails中完成:

@comment_notifications = Comment.where
                                .not(author_id: current_user.id)
                                .where(post_id: user_posts_id)