CouchRest模型为_id字段使用自定义值而不是guid

时间:2011-09-23 20:39:11

标签: ruby-on-rails rails-models couchrest

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

E.g。

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

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

1 个答案:

答案 0 :(得分:3)

您可以尝试使用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

的wiki条目