Hi everybody!

Is it possible to append a method to the before action callbacks but call 
it always as the last one before the action is called?

This is probably a bit badly expressed. It's maybe clearer with an example.

I have the default ApplicationController:

class ApplicationController
  before_action :authorize!
end

And I have an UsersController with a callback:

class UsersController
  before_action :set_user

  private

  def set_user
    @user = User.find(params[:id])
  end

  def authorized?
    return true if @user == current_user
  end
end

Now I've a small Gem called ActionControl 
<https://github.com/tobiasfeistmantl/action_control>. It makes it possible 
to authorize a user in a before action callback.

Now the problem is that the authorize callback is at the beginning of the 
callback queue. But the user is set after the authorization is done. As a 
consequence I have no access to the @user instance variable in my 
authorized? method and the authorized? will always be negative.
As workaround for now I add the authorization callback after the specific 
setter but I think this isn't really pretty.

I've looked into the source code of Rails but haven't found a way to 
manipulate the callback queue (or maybe I've overlooked something?).

I hope that the question above is a bit more clear :).

Happy Coding

Best

Tobias


-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/a548d392-853d-48e6-b778-9414e6df95b4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to