我是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变量尽管在应用程序中我从未在该变量中设置值。
由于
答案 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,或者您最不了解最简单的代码片段。