2011-05-09 40 views
1

我的表格包含兩列標題和說明。 我想爲用戶提供一個功能來爲現有頁面創建重複頁面。如何維護數據庫中的重複記錄?

就像現有的頁面數據庫存儲值一樣。

標題1,廣告描述

當重複頁面按鈕用戶點擊我要創建這樣的現有頁面重複條目。

1)點擊首次

Copy_1_Title1, 說明1

2)點擊第二次

Copy_2_Title1, 說明1

我如何創建這種類型的功能?我的數據庫應該如何呢?這是一種正確的方式嗎?

+0

我有一個可能的答案,但我想知道爲什麼你會想這樣做第一。 – 2011-05-09 13:42:15

回答

4

我想你應該創建第三列,並將它命名,例如copy_number,然後創建一個記錄之前,你可以通過標題找到它,如果標題存在,您可以得到copy_number的值並加一。然後你可以使用這個數字來顯示你想要的標題:
「copy _#{record.copy_number} _#{record.title}」或類似的東西。

+0

我會命名列版本,因爲這就是這裏真正發生的事情。但除此之外,你說得很對。有一個upvote – 2011-05-09 13:53:04

+0

謝謝,很高興幫助 – bor1s 2011-05-09 14:08:28

1

@ bor1s提出了非常正確的解決方案。

但爲了利益,你可以使用這個mthod進行復制:)

class Page < AR::Base 
    def duplicate 
    # new_page = self.clone 
    new_page = Page.new self.attributes.except(:id, :created_at, :updated_at) 
    copy = (self.title.match(/Copy_(\d)+.*/).try([1]) || 0) + 1 
    new_page.title = "Copy_#{copy}_#{self.title}" 
    new_page.save 
    end 
end 
+0

感謝您的讚賞 – bor1s 2011-05-09 14:09:35

+0

@flOOr self.clone不會更改新對象的updated_at和created_at。有沒有辦法創建沒有時間戳的克隆? – 2011-05-09 14:51:42

+0

是的。看我的編輯 – fl00r 2011-05-09 15:27:15