在尝试为我的练习应用程序设置策略时。我在我的帖子控制器中遇到了“无方法错误”。
如果我们在后控制器上归零,我的更新方法就是代码。
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
代码指向 pundit 中查找访问策略的助手。
在我的 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