Пара вопросов по скрепке

#ruby-on-rails #paperclip

#ruby-on-rails #скрепка

Вопрос:

Я пытаюсь добавить несколько вложений к одной из моих моделей, назовем ее ModelA. Вместо того, чтобы добавлять файлы непосредственно в мою модель, я создал другую, давайте вызовем ModelB . Модель имеет ассоциацию has_many с ModelB, а ModelB имеет ассоциацию belongs_to с ModelA.

Во-первых, это хороший способ добавить несколько вложений?

Во-вторых, я хочу, чтобы пользователь при создании экземпляра ModelA с помощью формы мог добавлять файлы прямо туда с помощью file_field . Я думал об использовании экземпляра ModelA methods .modelbs.create для создания и автоматического связывания экземпляра ModelB. Я не совсем понимаю, как это будет работать. Во-первых, метод create требует сохранения модели, прежде чем он позволит мне ее использовать. Во-вторых, я не знаю, как настроить представление (что передать помощнику file_field), поскольку экземпляр ModelB еще не создан.

Кто-нибудь использовал paperclip для создания нескольких вложений и каков наилучший подход?

Комментарии:

1. Благодаря apneadiving, вложенные формы / атрибуты выглядят так, как нужно в rails 3. Однако, прежде чем увидеть ваш пост, я заставил его работать, вручную создав «ModelB» в новом методе без привязки к «ModelA». Затем в методе create я создал новую ModelB с возвращенными параметрами. Затем, если экземпляр ModelA успешно сохранен, я связал с ним экземпляр ModelB.

2. К вашему сведению, я успешно использовал вложенные атрибуты / формы, и, похоже, это отлично работает. Теперь я могу создавать / уничтожать «дочерние» модели прозрачно с родительской моделью. Я также использовал некоторый javascript в представлении для кнопки «Добавить другой файл», которая добавляет другое поле файла, чтобы добавить столько файлов, сколько я хотел бы.

3. Для дальнейшего использования вы можете использовать modela.modelbs.build для создания экземпляра ModelB перед сохранением экземпляра ModelB.