为什么我们不在身份验证中使用@var?

时间:2013-03-31 01:39:40

标签: ruby-on-rails

def create
  user = User.find_by_name(params[:name])

  if user and user.authenticate(params[:password])
    session[:user_id] = user.id
    redirect_to admin_url
  else
    redirect_to login_url, alert: "Invalid user/password combination" 
  end

end

这里为什么用户被声明为局部变量而不是实例变量@user?

3 个答案:

答案 0 :(得分:2)

可能是因为视图不需要访问user对象。它只是实例化它以查看它是否是一个有效的用户并且它被正确验证,然后它重定向到管理页面。

答案 1 :(得分:0)

因为您通常不需要访问操作之外的用户变量

答案 2 :(得分:0)

答案是因为此操作无需查看。该操作包含一个if else块,它们都重定向,因此实例变量没有用。