Неразрешенные параметры с сильными параметрами с отношением «многие ко многим»

У меня есть и принадлежит ко многим настройкам отношений, например:

has_and_belongs_to_many :players, :class_name => "User" # In app/models/team.rb
has_and_belongs_to_many :teams                          # In app/models/user.rb

Я использую форму для создания команды после того, как уже создал пользователей. Вот мой контроллер команд:

def create
  @team = Team.create(team_params)
end

private
def team_params
  params.require(:team).permit(:name,:captain,:season,:year,:active,:player_ids)
end

И все сохраняет кроме игроков (юзеров). Вот что выводится на консоль:

Started POST "/teams" for 127.0.0.1 at 2013-10-20 01:46:04 -0400
Processing by TeamsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"jhNUgdfSVNxBgpZkmvjSQg/7DGsV1ts+Y1a1xWQ6A1Y=", "team"=>{"name"=>"uuuuu", "captain"=>"18", "season"=>"Summer", "year"=>"2013", "player_ids"=>["", "18"]}, "button"=>""}
  User Load (1.4ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 18 ORDER BY "users"."id" ASC LIMIT 1
Unpermitted parameters: player_ids
   (0.2ms)  BEGIN
  SQL (3.4ms)  INSERT INTO "teams" ("captain", "created_at", "name", "season", "updated_at", "year") VALUES ($1, $2, $3, $4, $5, $6) RETURNING "id"  [["captain", 18], ["created_at", Sun, 20 Oct 2013 05:46:04 UTC +00:00], ["name", "uuuuu"], ["season", "Summer"], ["updated_at", Sun, 20 Oct 2013 05:46:04 UTC +00:00], ["year", 2013]]
   (4.2ms)  COMMIT
Redirected to http://lvh.me:3000/admin
Completed 302 Found in 23ms (ActiveRecord: 9.3ms)

Есть идеи, почему игроки не сохранялись? Изначально у меня не было player_ids в params.require, но я добавил его безрезультатно


person Tom Prats    schedule 20.10.2013    source источник
comment
Есть ли в вашей модели команды accepts_nested_attributes_for :players?   -  person Alter Lagos    schedule 21.10.2013
comment
Да, извините, я не показал эту часть   -  person Tom Prats    schedule 22.10.2013


Ответы (1)


Попробуйте с:

params.require(:team).permit(:name,:captain,:season,:year,:active,player_ids: [])
person Alter Lagos    schedule 21.10.2013
comment
Почему это работает? Я не помню, чтобы видел это в документах или что-то в этом роде. - person Tom Prats; 22.10.2013
comment
Это спасение для меня - person Carlosin; 25.02.2014
comment
params.require(...).permet(..., player: []) у меня сработало. Спасибо за указатель в правильном направлении. - person Jon La Marr; 17.04.2015