我想知道是否有一种方法可以使用自定义字符串值(例如对象的名称)作为CouchRest模型中的_id字段而不是guid。
例如。
class Cat < CouchRest::Model::Base
property :name
end默认情况下,它将使用guid作为_id字段。但我只想使用name属性作为_id。
发布于 2011-10-11 07:49:24
您可以尝试使用unique_id,如下所示
class Cat < CouchRest::Model::Base
property :name
unique_id :name
end在第一次保存文档之前,unique_id将调用任何方法,并将其指定为文档的_id。但是,您将拥有一个同时设置了_id和name字段的Cat文档。如果名称更改,它们甚至可能不同步。
一种可能更好的选择是创建一个getter和setter,它只需更改文档的_id属性
class Cat < CouchRest::Model::Base
def name
self['_id']
end
def name=(value)
self['_id']=value
end
end因为在本例中没有额外的属性,所以name将始终返回文档的id。但是,一旦文档被写入,就不可能更改名称,因为重新分配_id将不起作用。
更多信息:Here是unique_id的rdoc。你也可以在validations上查看沙发休息模型的维基条目
https://stackoverflow.com/questions/7534552
复制相似问题