У меня есть приложение rails, которое содержит следующие модели - Пользователь, Блог, Пост, 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
В классе способностей (поскольку я использую cancan для ограничения доступа) я пытаюсь ограничить доступ пользователей и модераторов.в блогах, но с соблюдением правила
if user.is? :moderator
can :manage, Post do |post|
post.blog.moderators.include? user
end
end
все пользователи могут отправлять сообщения в любой блог.
Подскажите пожалуйста - как правильно настроить правило в классе Ability для следующих отношенийсхема?