2

これを動作させるのに少し問題があります。Rails、has_many throughとfields_forを使用する

class User < ActiveRecord::Base 
    has_many :events, :through => :event_users 
    has_many :event_users 
    accepts_nested_attributes_for :event_users, :allow_destroy => true, :reject_if => proc { |obj| obj.blank? } 
end 

class Event < ActiveRecord::Base 
    has_many :event_users 
    has_many :users, :through => :event_users 
    accepts_nested_attributes_for :users, :reject_if => lambda { |a| a[:nick].blank? }, :allow_destroy => true 
end 

class EventUser < ActiveRecord::Base 
    set_table_name :events_users 
    belongs_to :event 
    belongs_to :user 
end 

表レイアウト:

events_users 
    user_id 
    event_id 
    is_participating 

events 
    id 
    name 

users 
    id 
    name 

これは私が達成しようとしているどのような形

<%= form_for @event do |f| %> 
    <%= f.fields_for :users, f.object.users do |builder| %> 
    <%= builder.text_field :name, "Name" %> 
    <%= f.fields_for :event_users do |builder2| %> 
     <%= builder2.hidden_field :is_participating, :value => true %> 
    <% end %> 
    <% end %> 
<% end %> 

するためのコードでは、events_usersテーブルにis_participatingフィールドを設定することで、それは動作しません!

答えて

0

events_usersテーブルにプライマリキーとして 'id'フィールドがありませんか? events_users結合表の表レイアウトを投稿した場合に役立ちます。

+0

私は今すぐ追加しました! – jonepatr

+0

events_usersテーブルには、 "id"という名前の主キーフィールドが必要です。それが問題です。 –

+0

これは、is_participating beeing setの問題を解決しませんでした。新しいユーザーでフォームを保存してからもう一度更新すると設定されますが、2回目に新しいユーザーを追加すると、新しいユーザーには設定されません...任意のアイデアですか? – jonepatr

1

私は、次のされたなかったものを基本的にこの同じ問題を抱えていたと:

<%= form_for @event do |f| %> 
    <%= f.fields_for :event_users, @event_user do |builder| %> 
     <%= builder.hidden_field :is_participating, :value => true %> 
     <%= f.fields_for :users, f.object.user do |builder2| %> 
     <%= builder2.text_field :name, "Name" %> 
     <% end %> 
    <% end %> 
<% end %> 

つまり、私は、ネストされたオブジェクトの順序を切り替えます。これには、宣言された結合テーブルを介して関係を持っている必要があります。それは私のために3つのテーブルにすべての属性を保存しました。

しかし、現在のモデルを維持したい場合は、2番目のネストされたフォームの設定を最初のものと同じにしないでください。つまり、f.fields_for:event_usersの後にコンマとそのクラスのインスタンスが続かなければなりません。

関連する問題