Я думаю, вам нужен модуль здесь.
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 это, но я не понимаю, почему это не так.