Как добавить свойство в модуль в модели Rails CouchRest для поддержки множественного наследования?

В свой класс я хочу включить несколько модулей. Каждый модуль может определить свое собственное свойство, которое будет сохраняться в CouchDB.

Вот пример:

module Owner
 property :name
end

module Animal
 property :type
end

class Cat
 include Owner
 include Animal
end

Это не работает. Я получил эту ошибку: «неопределенное свойство метода». Я попытался добавить CouchRest::Model::Embeddable, но он также не будет работать для модуля. Все примеры, которые я вижу, расширяются от CouchRest::Model::Base. Однако я не смогу использовать этот подход, потому что Ruby не поддерживает множественное наследование.

Я не смогу изменить базовый формат JSON. Мой желаемый формат: {"name":"tom","type":"cat"}.

Любая помощь будет оценена по достоинству. Спасибо!


person PokerIncome.com    schedule 16.09.2011    source источник


Ответы (1)


Согласно http://www.couchrest.info/model/embedding.html я думаю ваш пример будет:

class Owner < CouchRest::Model::Base
 include CouchRest::Model::Embeddable
 property :name
end

class Animal < CouchRest::Model::Base
 include CouchRest::Model::Embeddable
 property :type
end

class Cat
 property :owner, Owner
 property :animal, Animal
end
person DataRiot    schedule 09.11.2011
comment
Спасибо за идею! Кажется, это не работает для меня. Я не смогу изменить базовый формат JSON. Мой желаемый формат: {name:tom,type:cat}. Ваш код будет генерировать формат {владелец:{имя:том}, животное:{тип:кот}} - person PokerIncome.com; 10.11.2011