Ruby on rails 坎坎、继承资源和STI
如何将cancan、继承的_资源和单表继承一起使用? 我有类似于此示例的代码:Ruby on rails 坎坎、继承资源和STI,ruby-on-rails,single-table-inheritance,cancan,inherited-resources,Ruby On Rails,Single Table Inheritance,Cancan,Inherited Resources,如何将cancan、继承的_资源和单表继承一起使用? 我有类似于此示例的代码: class Contact < ActiveRecord::Base; end class Person < Contact; end class Company < Contact; end class Ability include CanCan::Ability def initialize(user) user ||= User.new # in case of guest
class Contact < ActiveRecord::Base; end
class Person < Contact; end
class Company < Contact; end
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # in case of guest
can :read, Contact # User can read People and Companies
can :create, Person # User can create Person only
can :manage, :all if user.has_role? :admin
end
end
class ContactsController < InheritedResources::Base
load_and_authorize_resource
def new
@contact = contact_sti.new
end
private
def clazz
self.params[:contact_type].nil? ? "contact" : self.params[:contact_type]
end
def contact_sti
clazz.camelize.constantize
end
end
class联系人
当我尝试以用户身份创建Person时,我得到CanCan::AccessDenied。这是因为InheritedResources将Contact用作:resource\u class。我找到了以下解决方案:
class ContactsController < InheritedResources::Base
alias :resource_class :contact_sti
end
class ContactsController