设计rubygem - 如何过滤经过身份验证/未经过身份验证的用户的操作?

rub*_*pro 1 ruby-on-rails devise

我是Rails的新手,我需要创建一个具有以下条件的简单Rails项目:

  • 必须有一些文章页面(标题+正文)
  • 任何人都可以阅读这些文章
  • 只有经过身份验证的用户才能创建/编辑/删除这些文章

我使用scaffold为文章生成控制器,并使用gem Devise创建身份验证系统.但我不知道如何实施必要的条件.

谢谢回复.

Mic*_*hal 5

如果调用了您的用户模型user,那么您将在控制器中包含以下内容:

before_filter :authenticate_user!
Run Code Online (Sandbox Code Playgroud)

如果没有调用user,你可以authenticate_user用任何东西替换user in这个词.

您可以直接在控制器声明下添加它,如下所示:

class ArticlesController < ApplicationController
before_filter :authenticate_user!

  #rest of code

end
Run Code Online (Sandbox Code Playgroud)

如果您只想将控制器中的某些操作限制为登录用户,则可以使用它except来排除某些操作.在这里,任何人都可以看到索引和节目:

before_filter :authenticate_user!, :except => [:index, :show]
Run Code Online (Sandbox Code Playgroud)

only包括具体行动.此处,只有经过身份验证的用户才能执行列出的操作:

before_filter :authenticate_user!, 
              :only => [:new, :edit, :create, :update, :delete]
Run Code Online (Sandbox Code Playgroud)