我想知道是否有一种方法可以使用自定义字符串值(例如对象的名称)作为 _id 字段而不是 CouchRest 模型中的 guid。
例如
class Cat < CouchRest::Model::Base
property :name
end
默认情况下,它将使用 guid 作为 _id 字段。但我只想将名称属性用作_id。
我想知道是否有一种方法可以使用自定义字符串值(例如对象的名称)作为 _id 字段而不是 CouchRest 模型中的 guid。
例如
class Cat < CouchRest::Model::Base
property :name
end
默认情况下,它将使用 guid 作为 _id 字段。但我只想将名称属性用作_id。
您可以尝试使用 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 将无效。