Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 查找具有大于x的特定关联的所有对象_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails 查找具有大于x的特定关联的所有对象

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

我有很多农场,每个农场都有很多动物。我需要找到每一个有超过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 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")