Ruby on rails CouchRest模型对_id字段使用自定义值而不是guid

Ruby on rails CouchRest模型对_id字段使用自定义值而不是guid,ruby-on-rails,rails-models,couchrest,Ruby On Rails,Rails Models,Couchrest,我想知道是否有一种方法可以使用自定义字符串值(例如对象的名称)作为_id字段,而不是CouchRest模型中的guid 例如 类Cat

我想知道是否有一种方法可以使用自定义字符串值(例如对象的名称)作为_id字段,而不是CouchRest模型中的guid

例如

类Cat
默认情况下,它将使用guid作为_id字段。但是我只想使用name属性作为_id。

您可以尝试使用unique _id,如下所示

class Cat < CouchRest::Model::Base
  property :name
  unique_id :name
end
类Cat 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
类Cat 由于在这种情况下没有额外的属性,name将始终返回文档的id。但是,一旦写入文档,就无法更改名称,因为重新分配_id将无效

有关更多信息: 这是唯一_id的rdoc。
您还可以查看沙发休息模型的wiki条目,以了解

谢谢您的想法!我喜欢它,并将尝试它。重命名操作实际上必须删除旧文档并重新创建新文档,因为我不知道在CouchDB中重命名_id操作。谢谢,你是对的,似乎无法通过重新分配_id来重命名。只是编辑了我的响应。
class Cat < CouchRest::Model::Base
  def name
    self['_id']
  end

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