【问题标题】:Ruby on Rails - Create an order from a quoteRuby on Rails - 根据报价创建订单
【发布时间】:2010-11-23 23:58:16
【问题描述】:

我有一个简单的应用程序来计算画框工作的报价。用户将所有数据输入到表单中,然后应用程序根据这些数据计算出报价。

然后询问用户是否要根据此报价创建订单,如果愿意,则用户选择或输入新客户以与此订单相关联,然后应用程序创建订单。

在 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

【问题讨论】:

    标签: ruby-on-rails session forms ruby-on-rails-3


    【解决方案1】:

    我根本不会从引用中创建任何对象。

    我会创建一个不同的操作来计算报价,然后可能在每次某些表单字段值更改时使用 ajax 来调用它。单独的按钮和单独的操作将直接在表单之外创建订单。

    【讨论】:

      【解决方案2】:

      除了当前在给定浏览器上登录的用户之外,不要将会话用于其他任何事情。将会话视为一种便利,但不要将它用于任何关键的事情,如果它丢失了,那真的很重要。另外,请记住,rails 是无状态的,即从一个请求到下一个请求不会在内存中携带任何内容。

      我只需制作一个表单,在显示报价数据的页面上下订单,并在相关字段中填充来自报价的数据,例如报价多少、涉及的订单项目等等。

      【讨论】:

        【解决方案3】:

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

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

        不将这些信息存储在数据库中的挑战在于,它可能允许用户在输入这些数据后对其进行操作。如果你给他们报价并留在页面上,那就不好了。

        【讨论】:

        • 这种方法肯定会导致数据库中的订单项孤立吗?
        • 是的,但这有关系吗?您可以获得有关您的渠道的强大信息。从业务分析的角度来看,了解您的流失率(有多少人创建订单并在购买前离开)是非常有价值的信息。此外,如果您担心数据库中有很多垃圾,那么只需运行一个清理工作程序,它会经常删除旧的孤儿。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-24
        • 2018-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-07
        相关资源
        最近更新 更多