Я использую pundit для обработки разрешений в рубине на приложении rails, и я хочу посмотреть, может ли пользователь, который вошел в систему, умерить, прежде чем показывать кнопки удаления и редактирования для сообщений, комментариев, и т.д.Пытается сделать авторизацию пользователя более DRY с pundit
Вот оригинальный метод работы в почтовой политике, политика и т.д. комментарий
def destroy
user.present? && (user == record.user || user.role?(:admin) || user.role?(:moderator))
end
Вот новый метод, который я добавил к политике приложения
def can_moderate?(user, record)
@user = user
@record = record
user == record.user || user.role?(:admin) || user.role?(:moderator)
end
Вот сушилка после политики я работаю над
def destroy?
user.present? && user.can_moderate?
end
Это сушилка версией дает мне неопределенный метод ошибки для can_moderate. Любые мысли о том, почему?
Спасибо!
EDIT TO Отправлять ERROR
ActionView::Template::Error (undefined method `can_moderate?' for #<User:0xb5671e60>):
14: <% if policy(@post).edit? %>
15: <%= link_to "Edit", edit_topic_post_path(@topic, @post), class: 'btn btn-success' %>
16: <% end %>
17: <% if policy(@post).destroy? %>
18: <%= link_to "Delete", [@topic, @post], method: :delete, class: 'btn btn-danger', data: { confirm: 'Are you sure you want to delete this topic?' } %>
19: <% end %>
20: </div>
app/policies/post_policy.rb:7:in `destroy?'
app/views/posts/show.html.erb:17:in `_app_views_posts_show_html_erb___159039275__620331048'
Я хотел бы предложить вам идти вперед и вставьте всю ошибку здесь. Из описания вопроса вы получаете неопределенную ошибку для '' 'can_moderate''', но имя метода' '' can_moderate? '' '. Также, где вы упомянули метод? Тот же файл? – shayonj