Массовое назначение на сбор - PullRequest
0 голосов
/ 26 января 2012

У меня есть следующие модели:

class EventParticipant < ActiveRecord::Base
belongs_to :event
has_one :user

attr_accessible :name, :email, :is_organizer, :is_attending
end

class Event < ActiveRecord::Base
has_many :event_participants

attr_accessible :event_participants_attributes

accepts_nested_attributes_for :event_participants
end

class HappyHour < Event
end

и соответствующие им схемы:

create_table "event_participants", :force => true do |t|
    t.string   "name"
    t.string   "email"
    t.boolean  "is_organizer"
    t.boolean  "is_attending"
    t.integer  "event_id"
    t.integer  "user_id"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "events", :force => true do |t|
    t.string   "name"
    t.boolean  "is_finalized"
    t.string   "type"
    t.datetime "created_at"
    t.datetime "updated_at"
  end
add_foreign_key "event_participants", "events", :name => "event_participants_events_fk"

Теперь на контроллере EventParticipantsController я загружаю модель HappyHour из запроса следующим образом:

@happy_hour = HappyHour.new(params[:happy_hour])

Но по какой-то причине массовое назначение атрибута Happy_our event_participants завершается неудачно:

Запущен POST "/ event_participants" для 127.0.0.1 в 2012-01-25 18:55: 31 -0300 Обработка EventParticipantsController # создать как JS Параметры: {"happy_hour" => {"event_participants" => {"0" => {"name" => "Diego", "email" => "XXX @ YYY.com "," is_organizer "=>" true "}," 1 "=> {" name "=>" Test "," email "=>" test@email.com "," is_organizer "=>" false "}}}, "add_event_participant" => "aaa@bbb.com"} ПРЕДУПРЕЖДЕНИЕ. Невозможно массово назначить защищенные атрибуты: event_participants

Чего мне не хватает?Я нашел множество примеров массового присвоения связанных объектов по отношениям «один к одному», но ни одного из них по отношению ко многим, как в моем случае.

1 Ответ

1 голос
/ 26 января 2012

Вместо event_participants, вы должны отправить event_participants_attributes.

Вы также можете проверить Railscasts на вложенных модельных формах. Они имеют дело с отношениями один-ко-многим. Вот часть первая и часть вторая . Они довольно старые, и части javascript немного устарели, но его основной смысл по-прежнему верен.

...