In my class, I want to include multiple modules. Each module can define its own property to persist in couchDB.

Here is an example:

module Owner
 property :name
end

module Animal
 property :type
end

class Cat
 include Owner
 include Animal
end

This doesn't work. I got this error: "undefined method `property'". I tried added CouchRest::Model::Embeddable but it won't work for module either. All the examples I am seeing are extending from CouchRest::Model::Base. However, I won't be able to use this approach because Ruby doesn't support multiple inheritance.

I won't be able to change the underlying JSON format. My desired format is {"name":"tom","type":"cat"}.

Any help would be appreciated. Thanks!

有帮助吗?

解决方案

According to http://www.couchrest.info/model/embedding.html I think your example would be:

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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top