В моей ability.rb
, у меня есть следующие правила:Как указать собственное сообщение об исключении из моей способности.rb?
elsif user.has_role? :demo
can :read, Profile, demo_featured: true, demo_linked: true, message: "To access this profile, please subscribe here."
Но это не дает послание, которое я хочу.
Как получить это конкретное правило для создания сообщения, которое я хочу?
Edit 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. Наличие способности.rb создает правильное исключение - это всего лишь половина задания. – mlabarca
@mlabarca Что конкретно в моем контроллере вы ищете? Мой контроллер зверски, поэтому просто пытаюсь сузить его для вас. – marcamillion