На моем пути к Rails я только что нашел другой вопрос к сообществу.
У меня есть следующий проект: у меня есть календарь, в котором отображаются события, которые любой клиент имел дело с моей компанией.Если я хочу вставить новое событие только с одним клиентом, у меня нет проблем, но если я хочу вставить новое событие с более чем одним клиентом, у меня возникает проблема.
Но вставить было невозможноболее одного клиента одновременно.Я знаю, что с этой конфигурацией Rails принимает только одного клиента для каждого экземпляра события, и одним из решений может быть изменение модели ассоциации между Event и Client, но для меня это не имеет смысла (события has_many клиентов и события client_to клиента ...звучит странно).Итак, этот пост связан с опциями компиляции от сообщества.
Это мой код (я использую гем nested_form от Райана Бейтса [github.com/ryanb/nested_form.git]):
ОБНОВЛЕНИЕ: На данный момент я представляю новую группу моделей следующим образом:
models / group.rb
class Group < ActiveRecord::Base
has_many :clients
has_many :events
accepts_nested_attributes_for :clients
accepts_nested_attributes_for :events
attr_accessible :events_attributes, :clients_attributes
end
models / client.rb
class Client < ActiveRecord::Base
has_many :events
belongs_to :group
accepts_nested_attributes_for :events
accepts_nested_attributes_for :group, :update_only => true
attr_accessible :name, :surname, :email, :group_attributes, :events_attributes
end
models / event.rb
class Event < ActiveRecord::Base
belongs_to :group
accepts_nested_attributes_for :group, :update_only => true
attr_accessible :title, :group_id, :starts_at, :ends_at, :group_attributes
end
views / events / _form.html.erb
<%= simple_nested_form_for @event do |f| %>
<%= f.input :title %>
<%= f.fields_for :group do |group_form| %>
<%= group_form.fields_for :clients do |client_form| %>
<%= client_form.input :name %>
<%= client_form.input :surname %>
<%= client_form.input :email, :as => :email %>
<%= client_form.link_to_remove "Remove this client" %>
<% end %>
<%= group_form.link_to_add "Add another client", :clients %>
<% end %>
<%= f.input :starts_at, :as => :datetime %>
<%= f.input :ends_at, :as => :datetime %>
<%= f.button :submit %>
<% end %>
Но знаете, моя проблема заключается в том, что при создании события дляодна группа, эта группа успешно создается, когда я вставляю ТОЛЬКО ОДИН клиент.Когда я пытаюсь вставить двух или более клиентов, я получаю следующее:
ActiveModel::MassAssignmentSecurity::Error (Can't mass-assign protected attributes: new_1332430522879):
app/controllers/events_controller.rb:44:in `new'
app/controllers/events_controller.rb:44:in `create'
Ах!И я забыл прокомментировать ранее (но я думаю, что это не имеет отношения к этому), что я использую Ruby 1.9.3-p125 и Rails 3.2.2
Есть идеи?
Спасибозаранее ...
Фончо