Question

I have a Rails 3 app that I am trying to implement devise and declarative_authorization. An important part of declarative_authorization is the presence of a function "role_symbols" within the user model. Because of the way I implement roles, I am implementing an instance method within the User model to keep track of a value (let's call foo) as such:

  attr_accessor :foo

  def foo=(val)
    @foo = val
  end

  def foo
    @foo
  end

Then we will use the value of foo inside the role_symbols method to limit the valid roles, maybe like this:

def role_symbols
  roles.where("foo = ?", @foo).name.underscore.to_sym
end

The issue is when I try to set the value of foo for the current_user in a controller, the value doesn't stick, for example:

current_user.foo = 99

is successful, but when I check the value in another view (or controller), the value of current_user.foo is nil.

Isn't the current_user object just a User object that is persisted in the Session? If so, is there some lock on setting instance values within the current_user object?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top