2
我想知道是否有方法使用自定义字符串值(例如对象的名称)作为_id字段而不是CouchRest模型中的guid。CouchRest模型使用自定义值而不是guid _id字段
E.g.
class Cat < CouchRest::Model::Base
property :name
end
默认情况下,它将使用guid作为_id字段。但我只想使用name属性作为_id。
我想知道是否有方法使用自定义字符串值(例如对象的名称)作为_id字段而不是CouchRest模型中的guid。CouchRest模型使用自定义值而不是guid _id字段
E.g.
class Cat < CouchRest::Model::Base
property :name
end
默认情况下,它将使用guid作为_id字段。但我只想使用name属性作为_id。
你可以尝试使用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
感谢您的想法!我喜欢它,并会尝试一下。重命名操作实际上必须删除旧文档并重新创建新文档,因为我不知道在CouchDB中重命名_id操作。 –
谢谢,你是对的,似乎不可能通过重新分配_id来重命名。刚编辑我的回复。 – sebzz