2016-11-07 43 views
0

我爲一個朋友創建一個簡單的電子商務,我想實現一個優惠券系統。我希望優惠券成爲新的模式,管理員可以像管理員一樣從管理面板創建新的優惠券。Rails定製優惠券系統

我的模特現在就是這樣。

class Order < ActiveRecord::Base 
    has_many :order_items 

class OrderItem < ActiveRecord::Base 
    belongs_to :product 
    belongs_to :order 

我知道我需要一個協會訂單 - > belongs_to的:優惠券和優惠券 - >的has_many:訂單或訂單 - > HAS_ONE:優惠券和優惠券 - > belongs_to的:訂單。我想要任何訂單隻有一張優惠券。

但我的主要問題是如何創建一個表單,以檢查是否存在優惠券。

我知道如何更新total_price等。

謝謝。

回答

0

只需確保name或優惠券的某些其他屬性在Coupon.rb模型中是唯一的。有關更多信息,請參閱下面的鏈接。

http://guides.rubyonrails.org/active_record_validations.html#uniqueness

然後你可以索引券由Coupon.name。這將有兩個方面的幫助:1)如果你的管理員試圖創建一個帶有重複名稱或代碼的優惠券,他們會得到一個錯誤消息,說明優惠券退出。 2)當消費者輸入優惠券時,您可以通過致電Coupon.find_by_name('NAME')來檢查消費者是否退出,其中NAME是消費者輸入的內容。如果那個返回零,那麼顯然他們輸入了一個沒有創建的優惠券。

+0

所以,你建議將Coupon.find_by添加到我的訂單控制器。如何在視圖上實現這一點? – elgreko

+0

如果你有一個表單來創建優惠券,後臺會自動檢查表單提交時該名稱是否唯一,如果管理員嘗試創建副本,則顯示錯誤。你還在問如何在前端創建表單?或前端的唯一性驗證? – tomjohn

+0

不,我的問題不是創建優惠券的驗證。我一直堅持如何在購物車頁面中實現一個表單,以檢查提供的代碼是否存在並且是有效的,如果存在,則添加訂單金額或者如果不存在則拋出錯誤。 – elgreko