我正在使用“where”语法编写Rails 3 ActiveRecord查询,它使用SQL IN和SQL OR运算符,并且无法弄清楚如何一起使用它们。Rails 3使用SQL IN和SQL OR运算符的ActiveRecord查询
此代码(在我的用户模型):
Question.where(:user_id => self.friends.ids)
#note: self.friends.ids returns an array of integers
但是这个代码
Question.where(:user_id => self.friends.ids OR :target => self.friends.usernames)
返回该错误
syntax error, unexpected tCONSTANT, expecting ')'
...user_id => self.friends.ids OR :target => self.friends.usern...
不知道如何在Rails中写这篇文章,或者只是原始的SQL查询应该是什么?
谢谢!我使用的确切查询是:Question.where('target IN(?)OR user_id IN(?)',self.friends.usernames,self.friends.ids) – kateray 2010-11-17 20:23:01
好,我忘记了。我觉得他们应该是=>散列格式中的一种方式。你不应该需要一个字符串模式来在两个有效的条件之间添加OR,但是谁在乎你。 – 2010-11-17 20:26:48
主动记录的想法是数据库不可知的,所以在rails中使用原始sql不应该被认为是最好的解决方案,除非性能降低,而在这个查询中情况并非如此。 – nunopolonia 2011-08-08 14:13:40