Ich habe ein wenig Mühe, dies zu arbeiten.Schienen mit has_many through und 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
Tabellenlayout:
events_users
user_id
event_id
is_participating
events
id
name
users
id
name
Dies ist der Code für das Formular
ist<%= 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 %>
Was ich versuche zu erreichen, um das Feld zu setzen in der events_users Tabelle is_participating, aber es funktioniert nicht!
Ich habe es jetzt hinzugefügt! – jonepatr
Sie benötigen ein Primärschlüsselfeld namens "id" für Ihre Tabelle events_users. Das ist das Problem. –
Nun, es hat das Problem nicht gelöst, wenn das is_participating nicht gesetzt wurde. Es wird gesetzt, wenn ich das Formular mit einem neuen Benutzer speichere und dann wieder aktualisiere, aber wenn ich einen neuen Benutzer das zweite Mal hinzufüge, wird es es für den neuen Benutzer nicht einstellen ... irgendeine Idee? – jonepatr