在 运行 之前检查 user_signed_in 是否是 Rails 中的特殊定义

Check if user_signed_in before run the special def in Rails

例如我有定义:def indexdef managedef new。在路线中我有下一个:

if user_signed_in?
    def new
    end
end

但是我写的时候其他def(index and manage)也要求我登录。我该怎么做才能让新的 def 要求我登录?

路线:

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

尝试将此行添加到控制器中

before_filter :authenticate_user!, only: [:new]

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

before_filter :authenticate_user! 是要走的路。

您在问题中所做的是根据用户是否已签名 in/not 的布尔值有条件地定义控制器的操作,这在本质上是一种错误的方法。此外,在控制器class的定义点,没有用户。