Как сохранить дубликат записи в базе данных? - PullRequest
1 голос
/ 09 мая 2011

Моя таблица содержит два столбца Название и Описание. Я хочу предоставить пользователю возможность создавать дубликаты страниц для существующих страниц.

Как для существующего значения хранилища базы данных страниц, как.

Заголовок1, Описание1

Когда пользователь нажимает на кнопку дублирования страницы, я хочу создать дублирующую запись для существующей страницы, как эта.

1) Нажмите Первый раз

Copy_1_Title1, Description1

2) Нажмите Второй раз

Copy_2_Title1, Description1

Как я могу создать этот тип функциональности? Как должна быть моя база данных для этого? Это правильный путь?

Ответы [ 2 ]

4 голосов
/ 09 мая 2011

Я думаю, что вы должны создать третий столбец и назвать его, например, copy_number , а затем перед созданием записи вы можете найти его по title , и если заголовок существует, вы можете получить значение copy_number и увеличить его. Затем вы можете использовать этот номер для отображения заголовков по своему усмотрению:
"copy _ # {record.copy_number} _ # {record.title}" или что-то в этом роде.

1 голос
/ 09 мая 2011

@ bor1s предложил очень правильное решение.

Но для интереса вы можете использовать этот метод для дублирования:)

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...