У меня есть приложение на Rails 3, которое я пытаюсь реализовать с помощью devise и Declarative_authorization.
Важной частью декларативного_авторизации является наличие функции "role_symbols" в пользовательской модели.
Из-за того, как я реализую роли, я реализую метод экземпляра в модели User, чтобы отслеживать значение (давайте назовем foo) как таковое:
attr_accessor :foo
def foo=(val)
@foo = val
end
def foo
@foo
end
Затем мы будем использовать значение foo в методе role_symbols, чтобы ограничить допустимые роли, возможно, так:
def role_symbols
roles.where("foo = ?", @foo).name.underscore.to_sym
end
Проблема заключается в том, что когда я пытаюсь установить значение foo для current_user в контроллере, оно не сохраняется, например:
current_user.foo = 99
успешно, но когда я проверяю значение в другом представлении (или контроллере), значение current_user.foo равно nil.
Разве объект current_user не является просто объектом User, который сохраняется в сеансе?
Если да, есть ли какая-то блокировка установки значений экземпляра в объекте current_user?