我正在使用社交留言板(互联网论坛)RoR 开展一个项目,其中每个用户都可以创建多个板并加入来自其他用户的多个板。
我不想重新发明轮子,所以我使用 Devise 进行身份验证,使用 CanCan 进行授权。但是,由于以下原因,我在实施 CanCan 时遇到了一些问题:
class Board < ActiveRecord::Base
has_many :memberships
has_many :users , :through => :memberships
end
class User < ActiveRecord::Base
has_many :memberships
has_many :boards, :through => :memberships
end
class Membership < ActiveRecord::Base
ROLE = ['Administrator', 'Moderator','Member', 'Banned']
belongs_to :user
belongs_to :board
end
角色不属于用户本人,属于用户与董事会的关系,即Membership。所以知道谁是 current_user 是不够的,我还需要知道正在显示哪个板,所以我认为我必须将 Membership 而不是用户发送到 Ability 类初始化程序?任何指导将不胜感激。