Предположим, я работаю над классом MongoMapper, который выглядит следующим образом:
class Animal
include MongoMapper::Document
key :type, String, :required => true
key :color, String
key :feet, Integer
end
Теперь я хочу сохранить размах крыльев птицы. Было бы лучше добавить это, хотя это не имеет значения для многих документов и выглядит немного неопрятно:
key :wingspan, Float
Или это, несмотря на то, что это неописуемое всеохватывающее чувство, похожее на взлом:
key :metadata, Hash
Похоже, что подход метаданных (для которого есть прецедент в коде, который я наследую) почти избыточен для документа Mongo в целом: они оба предназначены для использования в качестве схем без пар ключей-значений. 1010 *
Тем не менее, также кажется, что добавление специфичных для животного ключей - скользкий путь к довольно уродливой модели.
Есть ли альтернативы (создать подкласс Bird)?