康康规则创建问题
我有 Rails 应用程序,其中包含以下模型 - 用户、博客、帖子、博客会员。
class BlogMembership < ActiveRecord::Base
belongs_to :user
belongs_to :blog
# Membership types:
SUBSCRIBER = 0
AUTHOR = 1
MODERATOR = 2
end
class Blog < ActiveRecord::Base
has_many :posts
has_many :memberships, :class_name => "BlogMembership"
# Blog memberships
def subscribers
self.memberships.where(:membership_type => [BlogMembership::SUBSCRIBER, BlogMembership::AUTHOR, BlogMembership::MODERATOR]).collect(&:user)
end
def authors
self.memberships.where(:membership_type => [BlogMembership::AUTHOR, BlogMembership::MODERATOR]).collect(&:user)
end
def moderators
self.memberships.where(:membership_type => BlogMembership::MODERATOR).collect(&:user)
end
end
在能力类中(因为我使用 cancan 进行访问限制),我尝试限制用户和版主对博客的访问,但按照以下规则,
if user.is? :moderator
can :manage, Post do |post|
post.blog.moderators.include? user
end
end
所有用户都可以将帖子发送到任何博客。
您能告诉我 - 如何在能力类中正确配置以下关系方案的规则吗?
i have rails app that contains following models - User, Blog, Post, BlogMembership.
class BlogMembership < ActiveRecord::Base
belongs_to :user
belongs_to :blog
# Membership types:
SUBSCRIBER = 0
AUTHOR = 1
MODERATOR = 2
end
class Blog < ActiveRecord::Base
has_many :posts
has_many :memberships, :class_name => "BlogMembership"
# Blog memberships
def subscribers
self.memberships.where(:membership_type => [BlogMembership::SUBSCRIBER, BlogMembership::AUTHOR, BlogMembership::MODERATOR]).collect(&:user)
end
def authors
self.memberships.where(:membership_type => [BlogMembership::AUTHOR, BlogMembership::MODERATOR]).collect(&:user)
end
def moderators
self.memberships.where(:membership_type => BlogMembership::MODERATOR).collect(&:user)
end
end
In Ability class (because i use cancan for access restriction) i try to limit access of users and moderators to the blogs, but with following rule
if user.is? :moderator
can :manage, Post do |post|
post.blog.moderators.include? user
end
end
all users can send Posts to the any blog.
Could you tell me please - how to properly configure rule in Ability class for following relations scheme?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果你尝试这个语法呢?
And if you try this syntax?