親モデルにネストされたフォームを通じてhas_many_throughリレーションシップを追加しようとしています。これが可能かどうかわかりませんか?ネストされたフォームのhas_manyからcheckboxまでの処理
ネストされたフォームは、チェックボックスを付けずに正常に機能します。チェックボックスは、入れ子になっているフォームの外にあるときは正常に動作します。
= 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 ADDED MODELSせずに完全に保存するように私は思います - -
Radusは多くのRadcheck(レガシーDBのために単数)を持っています。 Radcheckはradusergroupを通して多くのradgroupを持っています。
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
- UPDATE TWO -
def new
@radcheck = Radcheck.new
...
end
def create
@radcheck = Radcheck.new(params[:radcheck])
...
end
---私のDBは現在、次のようになりUPDATE 3 ---
:
+----------------+-----------------------+----------+------+
| radcheck_id | radgroup_id | priority | id |
+----------------+-----------------------+----------+------+
| 8 | 3 | 1 | 1 |
| 4 | 9 | 0 | 2 |
| 22 | 4 | 1 | 3 |
| 2 | 6 | 1 | 4 |
私は解決策を持っています下記のように働いてください。
+----------------+-----------------------+----------+------+
| ...username | --groupname | priority | id |
+----------------+-----------------------+----------+------+
| user123344 | group88888 | 1 | 1 |
| shushQb | 30-minutes | 0 | 2 |
| forty | gigiig | 1 | 3 |
| snang | ps-staff | 1 | 4 |
これが可能である:
はデシベルに、ないradcheck_idをradcheck_usernameとradgroup_groupnameを挿入私は何を期待していたでしたか?
可能であれば、モデルを表示する必要があります。 – Ryan
@ Ryanさん、ちょうど私の質問を更新しました。ありがとう – simonmorley
** has_many:through **は** something_ids **メソッドを生成しません。なぜあなたはこのRadusergroup **クラスを持っていますか?そこに有益な情報はありますか? –