rails表达式的含义

时间:2013-12-15 11:32:43

标签: ruby-on-rails ruby

我是Ruby on rails的新手。我正在阅读一本书“使用rails进行敏捷Web开发”

在书中,他们展示了如何通过以下代码段设置会话

class ApplicationController < ActionController::Base
  protect_from_forgery
private
  def current_cart
    Cart.find(session[:cart_id])
  rescue ActiveRecord::RecordNotFound
    cart = Cart.create
    session[:cart_id] = cart.id
    cart
  end
end

我不明白的是,他们将它设置在私有部分,但我仍然可以从其他类访问此功能,而且我不明白这是什么意思:cart_id我的意思是他们如何获得价值:cart_it变量尽管在应用程序中我从未在该变量中设置值。

由于

1 个答案:

答案 0 :(得分:0)

方法current_cart设置为私有,但它在ApplicationController中定义。所有其他控制器都可能从该控制器继承,因此他们可以访问它。

:cart_id是一个符号。在Rails中设置/获取会话变量的方式是

# set
session[:key] = value

# get 
session[:key]

您正在救援区中将值正好设置在下面的三行。

rescue ActiveRecord::RecordNotFound
  cart = Cart.create
  session[:cart_id] = cart.id
  cart
end

流程如下:当购物车不存在时,您在会话中创建一个存储ID。当购物车存在时,您将其退回。

在继续开发Rails开发之前,您可能需要学习一些Ruby,或者您最不了解最简单的代码片段。