2010-11-23 39 views
0

我有一个简单的应用程序来计算图片框架作业的报价。用户将所有数据输入到表单中,然后应用根据此数据计算出报价。Ruby on Rails - 从报价单创建订单

的用户然后问,如果他们想出来这个报价创建订单,如果他们这样做,则用户选择或输入一个新客户与此订单相关联,并且应用程序创建的顺序。

什么是Ruby on Rails的做到这一点的最好办法,我的表单数据存储到一个会话,然后使用这个会话创建订单,如果用户决定创建报价的订单?

下面是相关的架构:

create_table "orders", :force => true do |t| 
    t.string "status" 
    t.integer "customer_id" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
end 

create_table "order_items", :force => true do |t| 
    t.integer "order_id" 
    t.integer "height" 
    t.integer "width" 
    t.string "mount" 
    t.integer "mount_width" 
    t.string "moulding_1" 
    t.string "moulding_2" 
    t.string "moulding_3" 
    t.boolean "glass" 
    t.boolean "backing_board" 
end 

create_table "customers", :force => true do |t| 
    t.string "name" 
    t.string "address" 
    t.string "tel_number" 
    t.string "email_address" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
end 

回答

1

我不会根据报价创建任何对象。

我想创建一个不同的动作来计算报价,然后可能使用AJAX调用每一次某种形式的字段值改变。一个单独的按钮和一个单独的操作将直接从表单中创建订单。

0

不要使用会话用于其它任何东西比用户在给定的浏览器瞬间登录。将会话视为一种方便,但不要将其用于任何重要的事情,如果它丢失了,那将是非常重要的。另外,请记住,铁轨是无国籍的,即从一个请求到下一个请求不会携带任何内存。

我只是做一个表单来在页面上显示报价数据,并用报价中的数据填充相关字段,比如它有多少,订单项是什么,或者是什么。

0

存储在RoR的会话数据的优选方式是在cookie中存储。 Cookie商店不是很大。因此,您可能不想尝试在会话中存储大量数据。

考虑允许订单中的customer_id为空。然后,您可以在Cookie存储中存储一个哈希,如“:order_id =>”。这将允许您记住匿名用户选择的内容,即使他们离开该网站并返回。这对于在注册过程中能够衡量您的流失率也很有用(有多少人得到报价,然后再也没有回来)。

有没有在数据库中存储这些信息的挑战是,它可以让用户操作这个数据,他们已经进入了上去。如果你给他们一个价格并将其留在页面上,这会很糟糕。

+0

这种方法肯定会导致数据库中孤立的订单项? – freshest 2010-11-23 23:23:36