2011-06-06 58 views
0

我使用了一个gem,它不会对find_all_by()方法的数组起作用,但可以处理.where();但是,我不知道如何以产生相同结果的方式编写它。Rails:用.where方法重写find_all_by()

例如,我怎么可能重写:

Post.find_all_by_poster(@user.id , :conditions => ['title IS NOT NULL OR name !=?', 'Bob' ]) 

我尝试:

Post.where("poster = ? AND title !=? OR name !=?", @user.id, 'NULL', 'Bob') 

任何想法?我遇到了麻烦,满足相同的条件。谢谢你的帮助!

+0

查找到[MetaWhere(http://metautonomo.us/projects/metawhere/)由具有脱身在您的代码中编写SQL片段。 – 2011-06-06 21:57:17

+0

欣赏这个建议,好像它可以真正帮助提高我的生产力!我会开始练习它 – ahuang7 2011-06-06 23:38:32

回答

3

你仍然需要使用IS NOT NULL代替NULL传递作为一个单独的参数:

Post.where("poster = ? and (title is not null or name != ?)", @user.id, 'Bob') 
+0

奇妙的作品,谢谢! – ahuang7 2011-06-06 23:37:41