在我ability.rb
,我有以下規則:如何從我的ability.rb指定自定義異常消息?
elsif user.has_role? :demo
can :read, Profile, demo_featured: true, demo_linked: true, message: "To access this profile, please subscribe here."
但是,這並不產生我想要的消息。
如何獲得此特定規則以生成我想要的消息?
編輯1
以下是完整的ability.rb
if
條件:
def initialize(user)
user ||= User.new # guest user (not logged in)
alias_action :create, :show, :new, :destroy, to: :csnd
if user.has_role? :admin
can :manage, :all
elsif user.has_role? :coach
# do some stuff
elsif user.has_role? :demo
can :read, Profile, demo_featured: true, demo_linked: true
elsif user.has_role? :player
# can do some stuff
else
can :read, Profile
end
end
這些都是從我的ProfilesController
一些位:
before_action :set_profile, only: [:show, :edit, :update, :destroy, :invite_user, :profiles]
def set_profile
@profile = Profile.published.includes(:grades, :positions, :achievements, :videos, :transcripts).friendly.find(params[:id])
end
什麼是與ELSIF條件。 IF條件是否在ELSIF條件之前存在?我認爲這是問題所在。 –
發佈您的控制器代碼。您必須捕獲控制器中的異常,並在響應的閃存或警報部分使用其消息,如以下所述:https://github.com/CanCanCommunity/cancancan/wiki/Exception-Handling。有ability.rb產生正確的異常只是一半的工作。 – mlabarca
@mlabarca你在尋找什麼特別在我的控制器中?我的控制器很糟糕,所以試圖縮小它的範圍。 – marcamillion