I recently achieved something similar using the method described here:
https://github.com/ryanb/cancan/wiki/Accessing-request-data
In my case, it looked something like this:
application / controllers / application_controller.rb:
class ApplicationController < ActionController::Base
...
def current_ability
@current_ability ||= Ability.new(current_user, params[:token])
end
end
application / models / ability.rb:
class Ability
include CanCan::Ability
def initialize(user, token=nil)
...
can :read, Article, :tokens => { :token => token }
...
end
end
source
share