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

时间:2013-05-04 19:30:53

标签: ruby-on-rails devise

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

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

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

感谢您的回复。

1 个答案:

答案 0 :(得分:5)

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

before_filter :authenticate_user!

如果未调用user,则会将authenticate_user中的单词替换为任何内容。

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

class ArticlesController < ApplicationController
before_filter :authenticate_user!

  #rest of code

end

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

before_filter :authenticate_user!, :except => [:index, :show]

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

before_filter :authenticate_user!, 
              :only => [:new, :edit, :create, :update, :delete]