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])