假设我有食肉动物的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
答案 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