Rails 3:检索具有某个值不等于另一个值的所有对象?

时间:2011-05-26 23:00:34

标签: ruby-on-rails

我有一个名为Review的表格,我想检索所有没有:stage等于"approve"的评论对象。

这样的事情:Review.where(:stage not_equal_to "approve")

我怎么能这样做呢?我在哪里可以找到我可以在.where内拨打的电话列表,例如小于,大于等等。

2 个答案:

答案 0 :(得分:7)

使用纯字符串条件查询,这些查询记录在http://guides.rubyonrails.org/active_record_querying.html#pure-string-conditions的Rails指南中。

Review.where("stage != ?", "approve")

如果你在字符串条件中使用用户值,这可能容易受到SQL查询的影响,所以使用上面的数组语法,它会在清理后用每个传递的参数替换问号。

答案 1 :(得分:4)

您只需使用

即可
Review.where("stage <> 'approve'")

此字符串将直接在where子句的SQL中使用。要非常小心不要Review.where("stage <> #{var}")因为它易受sql注入攻击,而是使用Review.where("stage <> ?", var)