Ruby on rails 查找具有大于x的特定关联的所有对象
我有很多农场,每个农场都有很多动物。我需要找到每一个有超过5只动物的农场 我需要一些类似的东西…:Ruby on rails 查找具有大于x的特定关联的所有对象,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我有很多农场,每个农场都有很多动物。我需要找到每一个有超过5只动物的农场 我需要一些类似的东西…: Farm.where(animals.count > 5) 更新/回答: Farm.joins(:animals).group("farm_id").having("count(farm_id) > 5") 尝试: 参考:考虑在农场->动物上实施 class Farm < ActiveRecord::Base has_many :animals end class
Farm.where(animals.count > 5)
更新/回答:
Farm.joins(:animals).group("farm_id").having("count(farm_id) > 5")
尝试:
参考:考虑在农场->动物上实施
class Farm < ActiveRecord::Base
has_many :animals
end
class Animal < ActiveRecord::Base
belongs_to :farm, counter_cache: true
end
查找有5只或更多动物的农场
Farm.where("farms.animals_count >= 5")
如果我是你,我会用帕卡什的答案。不过,您也可以尝试使用
squel
gem。这可能会有帮助,我相信这很接近,但它不识别动物。id这些行对我不起作用:Farm.reset|u column|u information Farm.find|u each | Farm | Farm | Farm.update|属性:anies|count,Farm.anies.length end
我用以下代码替换它们来修复它:Farm.find| each{u each{u{(u.id,:动物)}
class AddAnimalCounterCacheToFarm < ActiveRecord::Migration
def up
add_column :farms, :animals_count, :integer
# if you need to populate for existing data
Farm.reset_column_information
Farm.find_each |farm|
farm.update_attribute :animals_count, farm.animals.length
end
end
def down
remove_column :farms, :animals_count
end
end
Farm.where("farms.animals_count >= 5")