1

假设我有一个用于食肉动物的 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
4

1 回答 1

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
于 2012-05-17T16:32:57.060 回答