Я пытаюсь добавить has_many_through отношения через форму, вложенную в родительскую модель. Я не могу понять, возможно ли это?Работа с has_many через флажки во вложенной форме
Вложенная форма работает нормально без флажков. И флажки отлично работают, когда они находятся вне вложенной формы.
= semantic_form_for @raduser do |f|
%ul
%li
= f.text_field :expiration, :placeholder => 'Expiration Date', :id => 'expiration_date'
- f.fields_for :radcheck do |builder|
= builder.text_field :username, :placeholder => 'Stuff'
-Radgroup.all.each do |group|
%li
= check_box_tag 'radcheck[radgroup_ids]', group.id, @radcheck.radgroup_ids.include?(group.id)
= group.groupname
%li
= f.submit
Это выдает ошибку:
undefined method `radgroup_ids' for #<ActiveRecord::Relation:0x007faaa24c2468>
У меня есть модели созданы нормально, я думаю, как все значения сохранять совершенно без флажков
--- EDIT ДОБАВЛЕНО МОДЕЛИ - -
У Radusers много Radcheck (единственное из-за устаревшего db). У Radcheck много радгрупп через radusergroup.
class Raduser < ActiveRecord::Base
has_many :radcheck, :dependent => :destroy
accepts_nested_attributes_for :radcheck, :reject_if => lambda { |a| a[:value].blank? }, :allow_destroy => true
end
class Radcheck < ActiveRecord::Base
self.table_name = 'radcheck'
attr_accessible :attribute_name, :username, :value, :op, :radgroupcheck_id, :radcheck_serial, :radgroup_ids
belongs_to :raduser
has_many :radusergroup, :dependent => :destroy
has_many :radgroup, :through => :radusergroup
end
class Radgroup < ActiveRecord::Base
self.table_name = 'radgroup'
has_many :radusergroup, :dependent => :destroy
has_many :radcheck, :through => :radusergroup
end
class Radusergroup < ActiveRecord::Base
belongs_to :radcheck
belongs_to :radgroup
end
- ОБНОВЛЕНИЕ TWO -
def new
@radcheck = Radcheck.new
...
end
def create
@radcheck = Radcheck.new(params[:radcheck])
...
end
--- UPDATE 3 ---
Мой дб в настоящее время выглядит следующим образом:
+----------------+-----------------------+----------+------+
| radcheck_id | radgroup_id | priority | id |
+----------------+-----------------------+----------+------+
| 8 | 3 | 1 | 1 |
| 4 | 9 | 0 | 2 |
| 22 | 4 | 1 | 3 |
| 2 | 6 | 1 | 4 |
У меня есть решение предлагаемый ниже.
То, что я надеялся сделать, это вставить radcheck_username и radgroup_groupname в БД, а не radcheck_id:
+----------------+-----------------------+----------+------+
| ...username | --groupname | priority | id |
+----------------+-----------------------+----------+------+
| user123344 | group88888 | 1 | 1 |
| shushQb | 30-minutes | 0 | 2 |
| forty | gigiig | 1 | 3 |
| snang | ps-staff | 1 | 4 |
возможно ли это?
Необходимо, чтобы увидеть ваши модели, если это возможно. – Ryan
@Ryan, только что обновил мой вопрос. Спасибо – simonmorley
A ** has_many: через ** не будет генерировать метод ** something_ids **. Почему у вас есть этот класс ** Radusergroup **? Есть ли полезная информация об этом или только идентификаторы? –