さまざまなアイテムの編集者が cancan を使用して自分の作品を公開できないようにしようとしていますが、期待どおりに機能しません。これまでのところ、他のすべては完全に機能しています。
例えば:
can :publish, [Article, Review] do |doc|
doc.user != @user
end
意見
<% if can? :publish, @review %>
カスタムアクションを設定するためのドキュメントに従いましたが、これまでのところ成功していません。
https://github.com/ryanb/cancan/wiki/Custom-Actions
アビリティ.rb
class Ability
include CanCan::Ability
def initialize(user)
@user = user || User.new # for guest
@user.roles.each { |role| send(role) }
if @user.roles.size == 0
can :read, :all #for guest without roles
end
end
def author
can :manage, [Article, Review] do |doc|
doc.try(:user) == @user
end
can :submit, [Article, Review]
end
def editor
can :manage, [Article, Review]
can :publish, [Article, Review] do |doc|
doc.user != @user
end
end
def admin
can :manage, :all
can [:submit, :publish, :reject], [Article, Review]
end
end