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