我有一個用戶模型has_many文檔。每個文檔的標題在用戶範圍內必須是唯一的。這按預期工作。Ruby/Rails獨特的名字生成器
class Document < ActiveRecord::Base
has_many :documents, :dependent => :delete_all
end
class Document < ActiveRecord::Base
belongs_to :user
validates_presence_of :title
validates_uniqueness_of :title, :scope => :user_id
end
當我克隆一個文檔時,我想確保它的標題是唯一的。 OSX會將「複製」附加到在Finder中複製的文檔。如果對象的名字以'copy'結尾,它會添加一個遞增的數值,從2開始(例如'foo copy 2')。我想重現這種行爲。
好像我需要做的ResumeController的複製操作如下:
- 得到了用戶的文檔集合
- 提取標題到一個數組
- 尋找新對象的數組標題
- 如果未找到標題,則保存對象
- 如果找到標題(可能是多個,如'foo Copy','foo Copy 2'),請將'Copy'附加到標題或incr表示數字。正則表達式模式'Copy [0-9] * $'似乎找到了正確的匹配。
此刻,複製邏輯位於ResumeController中,但將其添加到Document模型似乎更合適。
任何意見表示讚賞。
做一個發現肯定會有所幫助。但是,這並沒有解決主要問題。你有什麼想法嗎? – craig 2010-08-03 12:19:41