My current project involved an auth gem (internal) that provides user management into every app that it’s included into. I want this engine to be able to define some cancan rules since it determines the current_user and should allow some users to edit more than others when it comes to users, their roles, and the services they can access.
My main app also needs to provide more cancan rules. In order to do this I’m defining a new Ability class in my engine with a namespace:
# This is your main app/models/ability.rb file in your app
class Ability < Namespace::Ability
def initialize(user)
super
# Main app CanCan rules
end
end
# This is in your engine under app/models/namespace/ability.rb
module Namespace
class Ability
include CanCan::Ability
def initialize(user)
# Engine CanCan rules
end
end
end
This is work out well so far. I’ll edit if I run into any problems with this approach as I add more rules.