ActiveRecord не может обновить отношение HABTM - PullRequest
2 голосов
/ 16 апреля 2009

Я использую простую модель для авторизации пользователя с двумя ActiveRecords User и Role User и Role имеют отношение HABTM друг к другу.

Я пытался создать пользовательский интерфейс для назначения ролей пользователям с помощью простых флажков - как в Railscasts Episode # 17 .

Моя проблема в том, что ни User#new, ни User#update_attributes не используют параметры, отправленные моей формой, для обновления отношения между объектом User и его ролями. params[:user][:role_ids] содержит правильные значения. Но вызов @user.roles сразу после User.new(params[:user]) или @user.update_attributes(params[:user]) возвращает пустой массив.

Ручное назначение ролей с помощью @user.roles или @user.role_ids работает, но не "магия" внутри User#new или User#update_attributes.

Есть идеи?

1 Ответ

8 голосов
/ 16 апреля 2009

Высоки шансы, что в вашей модели User вы используете вызов attr_accessible или attr_protected, что делает role_ids защищенным от массового назначения.

Если вы действительно хотите обновить роли с помощью операторов массового назначения, просто добавьте

attr_accessible :role_ids

к вашей модели. Тем не менее, я рекомендую вам сначала прочитать http://railspikes.com/2008/9/22/is-your-rails-application-safe-from-mass-assignment, просто чтобы узнать все потенциальные проблемы массового назначения.

...