Rails формирует для has_many через ассоциацию с дополнительными атрибутами?

Как я могу сгенерировать поля формы для ассоциации has_many: через , которая имеет дополнительные атрибуты?

Связь has_many: через имеет дополнительный столбец называется весом .

Вот файл миграции для таблицы соединения:

create_table :users_widgets do |t|
  t.integer :user_id
  t.integer :widget_id
  t.integer :weight

  t.timestamps
end

Модели выглядят следующим образом:

User
  has_many :widgets, :through => :users_widgets,
           :class_name => 'Widget',
           :source => :widget
  has_many :users_widgets
  accepts_nested_attributes_for :widgets # not sure if this is necessary


Widget
  has_many :users, :through => :users_widgets,
           :class_name => 'User',
           :source => :user
  has_many :users_widgets
  accepts_nested_attributes_for :users # not sure if this is necessary


UsersWidget
  belongs_to :user
  belongs_to :widget

Для простоты виджет и пользователь имеют только одно собственное поле с именем name , следовательно Имя пользователя и Widget.first.name

Вопросы:

  • Как добавить раскрывающийся список для виджетов с соответствующим весом в форму создания / редактирования пользователя?

  • Как я могу динамически добавлять дополнительные формы виджетов к пользователям или формы пользователей к виджетам, чтобы легко добавить или удалить эти отношения? Гем nested_form_for кажется идеальным решением, но мне не удалось заставить его работать.

  • Помимо моделей и частей формы, нужно ли внести какие-либо изменения в мой контроллер?


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

Я использую Rails 3.1 и simple_form 2.0.0dev для создания своих форм.

8
задан Marco 9 December 2011 в 21:59
поделиться