Rails активный админ для has_many через ассоциации - PullRequest
0 голосов
/ 13 марта 2012

Как отобразить дополнительный атрибут модели соединения (в has_many через ассоциацию) в формах active_admin?

f.input :ad_slots

Будет отображаться только модель ad_slots, но у меня есть таблица соединений с названием stream_slots, в которой есть дополнительный столбец с именем продолжительности. Я хочу иметь возможность выбрать рекламное место, а также ввести продолжительность.

Это модели:

#live_stream:
has_many :stream_slots, :dependent => :destroy
has_many :ad_slots, :through => :stream_slots

#ad_slot:
has_many :stream_slots, :dependent => :destroy
has_many :live_streams, :through => :stream_slots

#stream_slot:
belongs_to :ad_slot
belongs_to :live_stream

и stream_slot имеют идентификаторы двух других моделей, а также дополнительный атрибут продолжительности.

Спасибо.

- Пробовал что-то еще -

Вместо ссылки на ad_slots я сделал следующее:

f.has_many :stream_slots do |association|
  association.inputs do 
    association.input :ad_slot
    association.input :duration
  end

конец

и в классе LiveStream я добавил:

accepts_nested_attributes_for :stream_slots

Таким образом, форма показывает ad_slots для меня на выбор, а также текстовое поле для дополнительного атрибута, однако, я не могу его сохранить. Я верю, что знаю, в чем проблема, но я не знаю, как ее решить. Это потому, что live_stream_id в таблице stream_slots пуст. Как установить его для недавно созданного live_stream? (Тот, который я создаю сейчас ..)

Любая помощь будет оценена ..

1 Ответ

1 голос
/ 14 марта 2012

У меня все получилось. Как упоминалось в вопросе, проблема заключалась в том, что при отправке формы live_stream_id был пуст.

Поэтому я просто удалил проверку в модели stream_slot, которая говорит, что live_stream_id долженприсутствовать, и это сработало.

Не уверен, что это лучший способ сделать это ... но пока работает.

Если у кого-то есть лучшее решение, пожалуйста, поделитесь.

...