Rails 3在外部模型中创建对象



我有一个Transaction对象,想要:

  1. 检查购物车会话是否存在
  2. 如果是,请将交易与会话中的购物车ID相关联
  3. 如果没有,则创建一个新的Cart对象,并将其ID分配给会话变量

关系是:

Cart has_many Transactions
Transaction belongs_to Cart

我的问题是:如何/在事务控制器中创建Cart对象和关联会话的最佳方式是什么?

我在交易新操作中尝试了这样的操作:

@cart = Cart.new

并且,这在事务创建操作中:

@cart = Cart.new(params[:cart])
session[:cart] = @cart.id

但是,这不会创建会话或Cart对象。而且,在谷歌上搜索时,我找不到这类东西的文档。有人知道如何正确地完成吗?

Cart.new

将只实例化一个新的Cart,但不会将其持久化到数据库中。如果要在请求中使用Cart对象,则需要将其存储在数据库中。

使用此选项可持久化Cart对象:

Cart.create(params[:cart])

@cart.save!

为此:

session[:cart] = @cart.id

通过在会话中存储ID,您做了正确的事情:)但请注意,每次请求都需要再次获取ID。所以你可以在你的application_controller.rb中添加一个助手,比如:

def current_cart
  Cart.find_by_id(session[:cart])
end

其可以返回CCD_ 2推车。

相关内容

  • 没有找到相关文章

最新更新