2011-09-23 77 views

回答

3

你可以尝试使用UNIQUE_ID如下

class Cat < CouchRest::Model::Base 
    property :name 
    unique_id :name 
end 

UNIQUE_ID将调用任何方法首先保存文档之前,并分配作为文档的_id。但是,您将拥有一个同时设置了_id和name字段的Cat文档。如果名称改变,它们甚至可能不同步。

一个可能更好的选择是创建一个getter和setter这将根本改变文档

class Cat < CouchRest::Model::Base 
    def name 
    self['_id'] 
    end 

    def name=(value) 
    self['_id']=value 
    end 
end 

看到,因为在这种情况下,没有额外的属性的_id属性,名称将始终返回ID的文件。但是,一旦文档被写入,重新分配_id将不起作用,将不可能更改名称。

欲了解更多信息: Here是unique_id的rdoc。 您还可以查看沙发休息模特的wiki条目validations

+0

感谢您的想法!我喜欢它,并会尝试一下。重命名操作实际上必须删除旧文档并重新创建新文档,因为我不知道在CouchDB中重命名_id操作。 –

+0

谢谢,你是对的,似乎不可能通过重新分配_id来重命名。刚编辑我的回复。 – sebzz

相关问题