DataMapper范围是否可以使用关联模型的范围?

时间:2012-05-17 14:50:13

标签: ruby ruby-datamapper

假设我有食肉动物的DataMapper范围,如下所示:

class Animal
  #...
  def self.carnivores
    all(:diet => 'meat')
  end
  #...
end

我可以在关联范围内重用该范围吗?

class Zoo
  #...
  def self.with_carnivores
    # Use `Animal.carnivores` scope to get zoos that have some?
    all(:animals => ???)
  end
  #...
end

1 个答案:

答案 0 :(得分:1)

您可以通过从关联中“反向”来完成此操作。

 class Zoo
  #...
  def self.with_carnivores
    # Assuming `Animal belongs_to :zoo`
    Animal.carnivores.zoo
  end
  #...
end

class Habitat
  #...
  def self.with_carnivores
    # Assuming `Animal has_many :habitats`
    Animal.carnivores.habitats
  end
  #...
end