我正在开发一个博客引擎,我不想设置 cancan。我找到了一些方法来做到这一点:
forem通过在主机用户模型中添加一个管理字段来解决问题,但是拥有多个角色需要很多字段,这绝对不是这样做的方法
我看到了一些这样的考试,但要做到这一点,我需要让我的主机应用程序用户模型与我的引擎模型有 has_many 关系,就像这样
class User < ActiveRecord::Base
attr_accessible :name
has_many Blogcms::RoleUser
has_many Blogcms::Role, :through => Blogcms::RoleUser
end
我真的不知道这是否是正确的方法,但这不会起作用,因为作为一个孤立的引擎,引擎模型将是不可见的
有人试过这个吗?对不起我的英语不好
编辑
我找到了一种方法,不必搜索用户模型,只需在我的角色模型中设置关系
module Blogcms
class Role < ActiveRecord::Base
has_many :role_user
has_many :user, :class_name => Blogcms.user_class, :through => :role_user
attr_accessible :name
# Return all the roles for a user
def self.roles_for_user(user)
joins(:user).where('users.id' => user.id)
end
end
end
像这样我的 roles_for_user 方法返回用户的所有角色