これを動作させるのに少し問題があります。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フィールドを設定することで、それは動作しません!
私は今すぐ追加しました! – jonepatr
events_usersテーブルには、 "id"という名前の主キーフィールドが必要です。それが問題です。 –
これは、is_participating beeing setの問題を解決しませんでした。新しいユーザーでフォームを保存してからもう一度更新すると設定されますが、2回目に新しいユーザーを追加すると、新しいユーザーには設定されません...任意のアイデアですか? – jonepatr