При попытке настроить политики для моего практического приложения. Я столкнулся с «No Method Error» в моем контроллере сообщений.Как разрешить «No Method Error» в моем постконтроллере. Devise, Pundit, Blogging app
Если мы установили нуль на постконтроллере, и мой метод обновления здесь - это код.
def update
authorize @post
respond_to do |format|
if @post.update(post_params)
format.html { redirect_to @post, notice: 'Post was successfully updated.' }
format.json { head :no_content }
#redirect_to @post
else
render :edit
format.html { render action: 'edit' }
format.json { render json: @post.errors, status: :unprocessable_entity }
end
end
конец
Как вы можете увидеть ничего особенного. Просто HTML и JSON рендеринг обновленной страницы.
Код authorize
указывает на помощника в экспертном совете, который просматривает политику доступа.
Определенный в моей модели Admin.rb у меня есть.
def editor?
self.role == 'editor'
end
authorize
код смотрит политику, которая соответствует имени метода. Он просматривает класс политики и начинает применять бизнес-правила, найденные здесь. И вот здесь проблемы начинаются.
Я получаю def update? @admin.editor? end
И это говорит undefined method 'editor?' for #<Class:0x007ffb7fa4f6a0>
Код на ветке политики на Git: https://github.com/wmuengineer/portfolio/tree/policy
Где вы определили этот метод? Я имею в виду, в каком контроллере вы его выразили? –