为集合使用关联代理

时间:2012-03-21 01:51:41

标签: ruby-on-rails ruby-on-rails-3

假设我有一座拥有许多建筑物的城市。我想在城市中创建一个方法,检查城市是否有具有特定条件的建筑物,例如:

def has_building?(conditions)
    !self.buildings.where(conditions).empty?
end

哪种方法正常,但包含应包含在建筑模型中的行为。是否可以创建一个关联的方法,以便我可以将其转换为:

def has_building?(conditions)
    self.buildings.meet_requirements?(conditions)
end

1 个答案:

答案 0 :(得分:1)

你的意思是

class City < ActiveRecord::Base
  has_many :buildings do
    def meet_requirements?(conditions)
      self.where(conditions).any?
    end
  end
end

class Building < ActiveRecord::Base
  def self.meet_requirements?(conditions)
    self.where(conditions).any?
  end
end