我有一系列模型,都继承自基础模型Properties
例如Bars, Restaurants, Cafes, etc.
class Property
include MongoMapper::Document
key :name, String
key :_type, String
end
class Bar < Property
我想知道的是,如果记录恰好是Bar&amp;一个餐厅?有没有办法让单个对象继承两个模型的属性?它如何使用密钥:_type?
答案 0 :(得分:2)
我想你想要一个模块。
class Property
include MongoMapper::Document
key :name, String
key :_type, String
end
module Restaurant
def serve_food
puts 'Yum!'
end
end
class Bar < Property
include Restaurant
end
Bar.new.serve_food # => Yum!
通过这种方式,您可以让许多模型具有餐厅的属性,而无需复制您的代码。
你也可以尝试,虽然我自己没有尝试过,但它是多层次的继承。 e.g:
class Property
include MongoMapper::Document
key :name, String
key :_type, String
end
class Restaurant < Property
key :food_menu, Hash
end
class Bar < Restaurant
key :drinks_menu, Hash
end
我不确定MongoMapper是否支持这一点,但我不明白为什么不支持。