Ruby on Rails,通过两个条件找到

我试图通过两个字段的组合找到给定模型的所有值。

我有以下型号:

create_table "users", :force => true do |t| t.string "name" t.string "url" t.integer "clicks_given" t.integer "clicks_received" t.datetime "created_at" t.datetime "updated_at" end 

我已经为模型定义了这个方法:

  def credits credits = self.clicks_given - self.clicks_received end 

我试图找到超过给定学分的所有用户:

  @users = User.find(:all, :conditions => { "credits >= ?", -5 }) 

和:

  @users = User.find(:all, :conditions => { "clicks_given - clicks_received >= ?", -5 }) 

失败。 找到合适用户的正确声明应该是什么?

将条件作为数组而不是散列传递:

 @users = User.find(:all, :conditions => [ "clicks_given - clicks_received >= ?", -5 ]) 

第一个版本将无法工作,因为“credits”不是数据库列。

编辑:

或者在Rails 3语法中,使用您的订单:

 @users = User.where("clicks_given - clicks_received >= ?", 5).order("clicks_given - clicks_received") 

为什么不在这样的条件下直接使用-5:

  @users = User.find(:all, :conditions =>"clicks_given-clicks_received>=-5") 

如果你有一个变量代替-5那么你可以写这样的东西:

 @users = User.find(:all, :conditions => ["clicks_given-clicks_received >= ?",-5])