2016-11-07 91 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