2009-04-16 3 views
2

Я использую простую модель для авторизации пользователя с два ActiveRecords User и Role User и Role имеет HABTM отношение друг к другу.ActiveRecord не удается обновить 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.

Любые идеи?

+0

Можете ли вы разместить свой контроллер и просмотреть код? –

ответ

8

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

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

attr_accessible :role_ids 

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

+1

Большое спасибо. Просто прочитал об этом вчера, но пропустил его при создании моих моделей. – Koraktor