Некоторые рекомендации, если это возможно? Клонирование записей - PullRequest
0 голосов
/ 10 февраля 2012

Очень новичок в RoR, и я работаю над музыкальным приложением, в котором в выпуске может быть много продуктов.До сих пор я работал с основным уровнем «релиза», с уровнями вариантов «продукта» и уровнями «отслеживания» ниже этого.

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

В моей голове требования будут следующие:

  • Создать запись (это простой бит)
  • Создать клон любой записи (и ее трек-лист) минус уникальные поля, такие как Cat_No / Barcode, и одновременно создать где-нибудь ассоциацию, чтобы варианты можно было объединить в выпускепредставления, отчеты о продажах администратора и т. д.
  • Возможность обновления некоторых общих полей, таких как исполнитель, заголовок, описание (чтобы избежать необходимости редактировать каждый клон)
  • Возможность обновления / переопределения определенных клонированных полей, которые вбольшинство случаев будут одинаковыми, но иногда могут отличаться;например, дата выпуска.

Любое предлагаемое руководство будет оценено МАССИВНО.

Заранее спасибо, Райан

1 Ответ

0 голосов
/ 10 февраля 2012

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

Например:

def clone(new_attributes = {})
    source_attributes = self.attributes
    source_attributes.delete :cat_no #unique attributes
    source_attributes.delete :barcode 
    merged_attributes = source_attributes.merge new_attributes 
    MyModel.new(merged_attributes);      

end

def clone!(new_attributes = {})
    copy = self.clone(new_attributes)
    copy.save!
    copy.reload
    copy
end 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...