#mysql #ruby-on-rails #ruby
#mysql #ruby-on-rails #ruby
Вопрос:
Моя таблица содержит два столбца Title и Description. Я хочу предоставить пользователю функциональность для создания дублирующейся страницы для существующей страницы.
Like для существующей страницы базы данных хранит значение like.
Title1 , Description1
Когда пользователь нажимает на кнопку дублировать страницу, я хочу создать дублирующуюся запись для существующей страницы следующим образом.
1) Щелкните первый раз
Copy_1_Title1, Description1
2) Щелкните второй раз
Copy_2_Title1, Description1
Как я могу создать этот тип функциональности? Какой должна быть моя база данных для этого? Это правильный способ?
Комментарии:
1. У меня есть возможный ответ, но я хотел бы знать, почему вы хотели бы сделать это в первую очередь.
Ответ №1:
Я думаю, вам следует создать третий столбец и назвать его, например, copy_number, а затем перед созданием записи вы можете найти ее по названию, и если название существует, вы можете получить значение copy_number и увеличить его. Затем вы можете использовать это число для отображения заголовков по своему усмотрению:
«copy_#{record.copy_number}_#{record.title}» или что-то вроде этого.
Комментарии:
1. Я бы назвал версию столбца, поскольку это то, что здесь действительно происходит. Но в остальном вы совершенно правы. Проголосовать за
Ответ №2:
@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
Комментарии:
1. Спасибо за вашу оценку
2. @flOOr self.clone не изменит updated_at и created_at также для нового объекта. Есть ли какой-либо способ создать клон без временных меток?