У меня есть модель Post с атрибутом :published
(boolean) и Пользователь с атрибутом role
(строка). Существует три роли: ROLES = %w[admin publisher author]
Я не хочу, чтобы пользователи, чья роль автор, могли устанавливать или редактировать поле :published
в модели Post.
Я использую CanCan (и RailsAdmin gem), и мой упрощенный файл Ability.rb выглядит так:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.role? :admin
can :manage, :all
elsif user.role? :publisher
can :manage, Post
elsif user.role? :author
# I want to prevent these guys from setting the :published attribute
end
end
end
У кого-нибудь есть какие-то советы для такого рода вещей?