在Rails中运行特殊def之前检查user_signed_in

时间:2015-01-28 06:51:08

标签: ruby-on-rails devise

例如,我有defs:def indexdef managedef new。在路线我有下一个:

if user_signed_in?
    def new
    end
end

但是当我写它时,其他def(索引和管理)也要求我登录。我怎么能这样做只是新的def要求我登录?

路线:

get "/new" => "posts#new"

2 个答案:

答案 0 :(得分:2)

尝试将此行添加到控制器

before_filter :authenticate_user!, only: [:new]

答案 1 :(得分:0)

如果您确实使用Devise,请完整浏览指南。The filters是您错过的。

before_filter :authenticate_user!是要走的路。

你在问题​​中所做的是根据用户是否登录的布尔值有条件地定义控制器的动作,这实际上是一种错误的方法。此外,在控制器类的定义方面,没有用户。