Я хотел бы использовать rails новую динамическую функцию attr_accessible. Однако у каждого из моих пользователей много ролей (я использую декларативную авторизацию). Итак, у меня есть следующее в моей модели:
class Student < ActiveRecord::Base
attr_accessible :first_name, :as=> :admin
end
и я передаю это в моем контроллере:
@student.update_attributes(params[:student], :as => user_roles)
user_roles - это массив символов:
user_roles = [:admin, :employee]
Я бы хотел, чтобы моя модель проверила, совпадает ли один из символов в массиве с объявленным attr_accessible. Поэтому я избегаю дублирования.
Например, учитывая, что user_roles = [: admin,: employee]. Это работает:
@student.update_attributes(params[:student], :as => user_roles.first)
но бесполезно, если я могу проверить только одну роль или символ, потому что у всех моих пользователей много ролей.
Любая помощь будет принята с благодарностью
************** * UPDATE ************ ************
Пример приложения можно скачать здесь:
https://github.com/jalagrange/roles_test_app
В этом приложении есть 2 примера: учащиеся, у которых y не может обновить какие-либо атрибуты, несмотря на то, что 'user_roles = [: admin,: student]'; И люди, в которых я могу изменить только имя, потому что я использую "user_roles.first" в действии обновления контроллера. Надеюсь это поможет. Я уверен, что кто-то еще должен иметь эту проблему.