Нет встроенной интеграции с моделями;Вы передаете роль в вызове assign_attributes
:
@project.assign_attributes(params[:project], :as => :admin)
Для параметра :as
по умолчанию установлено значение :default
, и вы можете передать любой символ, который захотите.Чтобы интегрировать это в вашу User
модель, вы можете присвоить ей атрибут с именем role
, а затем сделать что-то вроде:
@project.assign_attributes(params[:project], :as => current_user.role.to_sym)
Вы также можете обойти защиту, используя :without_protection
:
@project.assign_attributes(params[:project], :without_protection => true)
Аналогичным образом методы new
, create
, create!
, update_attributes
и update_attributes!
соблюдают безопасность массового назначения. Руководство по безопасности Ruby on Rails содержит больше информации .