2011-09-23 80 views

回答

3

你可以嘗試使用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

+0

感謝您的想法!我喜歡它,並會嘗試一下。重命名操作實際上必須刪除舊文檔並重新創建新文檔,因爲我不知道在CouchDB中重命名_id操作。 –

+0

謝謝,你是對的,似乎不可能通過重新分配_id來重命名。剛編輯我的回覆。 – sebzz

相關問題