如何使用非属性的方法在Rails中找到

时间:2012-12-10 09:24:39

标签: ruby-on-rails activerecord

你如何做以下工作......

Beagle.beagles.where(:snount => "short")

...在为snout定义了Beagle方法ID的情况下,snout表中没有beagles列?

2 个答案:

答案 0 :(得分:2)

如果你需要一个范围(即一个ActiveRecord::Relation对象),那么我认为你运气不好,因为where处理数据库查询逻辑,而不是模型实例方法。但是,如果您只需要获得满足方法要求的结果数组,那么这将起作用:

Beagle.select { |b| b.snout == "short" }

请注意,这将从数据库中获取所有记录,然后从中选择您想要的记录。这是生成的SQL:

Beagle Load (0.1ms)  SELECT "beagles".* FROM "beagles" 

另请参阅:instance method in scope

答案 1 :(得分:1)

也许试试这个

beagles = Beagle.find(:all)
beagles.each do |beagle|
if beagle.snount == "short"
beagles_selected << beagle
end
end

然后您将拥有一个beagles_selected数组,其中包含您需要的所有小猎犬