2010-11-23 56 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