我正在用 ruby on rails 实现博客应用程序,我想限制普通用户(只有管理员可以创建)创建新文章。为此,我将 befor_filter 放在了后面的articles_controller.rb 文件中。我已经在 UI 中隐藏了用户的创建按钮,但普通用户仍然可以通过在浏览器的地址栏中键入来创建新文章。通过使用下面的代码,普通用户无法进入新文章页面,但它给了我“未定义的方法 `is_admin?我在地址栏中输入。有关更多信息,我已经实现了用户身份验证设计。
class ArticlesController < ApplicationController
before_filter :is_user_admin, only: [:new, :create]
def is_user_admin
unless current_user.is_admin?
:root
return false
end
end
end
class ArticlesController < ApplicationController
before_filter :is_user_admin, only: [:new, :create]
def is_user_admin
unless current_user.is_admin?
:root
return false
end
end
def index
@articles = Article.all(:order => "created_at DESC")
end
def show
@article = Article.find(params[:id])
end
def new
@article = Article.new
end
def create
@article = Article.new(params[:article])
@article.user_id = current_user.id
@article.save
redirect_to article_path(@article)
end
def destroy
@article = Article.find(params[:id])
@article.destroy
redirect_to action: 'index'
end
def edit
@article = Article.find(params[:id])
end
def update
@article = Article.find(params[:id])
@article.update_attributes(params[:article])
flash.notice = "Article '#{@article.title}' Updated!"
redirect_to article_path(@article)
end
end
applicaiton_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
def after_sign_in_path_for(user)
if current_user.is_admin?
dashboard_index_path
else
:root
end
end
end
基本上,我想限制普通用户(管理员除外)从 UI(完成)或在地址栏中输入地址来创建、更新或删除文章。我不知道为什么我会得到这个,我能做些什么来避免这种情况。我是否应该在 application_controller.rb 文件中编写上述方法。