您如何使以下工作...
Beagle.beagles.where(:snount => "short")
...在为snout
定义了方法 idBeagle
但表中没有snout
列的情况beagles
下?
您如何使以下工作...
Beagle.beagles.where(:snount => "short")
...在为snout
定义了方法 idBeagle
但表中没有snout
列的情况beagles
下?
如果您需要一个范围(即ActiveRecord::Relation
对象),那么我认为您不走运,因为where
处理的是数据库查询逻辑,而不是模型实例方法。但是,如果您只需要获得满足方法要求的结果数组,那么这将起作用:
Beagle.select { |b| b.snout == "short" }
请注意,这将从数据库中获取所有记录,然后从中选择您想要的记录。这是生成的 SQL:
Beagle Load (0.1ms) SELECT "beagles".* FROM "beagles"
另请参阅:范围内的实例方法
也许试试这个
beagles = Beagle.find(:all)
beagles.each do |beagle|
if beagle.snount == "short"
beagles_selected << beagle
end
end
然后,您将拥有一个beagles_selected
包含您需要的所有小猎犬的数组