以下代码段中的第3行代码有什么作用?

时间:2016-09-25 12:02:08

标签: ruby-on-rails

  def create
    chef = Chef.find_by(email: params[:email])
    if chef && chef.authenticate(params[:password])
      **session[:chef_id] = chef.id**
      flash[:success] = "You logged In"
      redirect_to recipes_path
    else
      flash.now[:danger] = "Check your email or password"
      render 'new'
    end
  end

什么是

session[:chef_id] = chef.id

做什么?那session[:chef_id]是一种变量还是什么?厨师的身份分配给谁?我可以在那里使用其他名字吗?

2 个答案:

答案 0 :(得分:0)

session[:chef_id] = :foochef_id个密钥存储在会话中,其值为:foo 因此,您可以稍后通过调用:foo来获取指定的session[:chef_id]值。

在您的代码中,它被分配给电子邮箱等于params[:email]的厨师ID 您可以为:chef_id命名,但我认为这是非常正常的名称。

答案 1 :(得分:0)

将chef_id存储在session中,这是一种在多个请求中保存数据的方法。它并不特定于Rails,因为会话也可用于所有Web应用程序。您可以在Rails会话here上阅读更多内容以及更多关于网络会话here

的内容