2012-07-16 54 views
0

我有一个问题,需要在用户输入报价的网站上有售后价格,比如招标系统,但报价将被验证,如果高于储备它被接受,如果下面,再试一次等​​。底价网站上的价格

任何想法的指导如何做到这一点在轨道上的红宝石?我为用户完成了大部分代码,这只是我发现很难研究的部分。

因此,他们的用户将有一个输入字段,他们在验证之前输入价格。 (很明显)

回答

1

您没有提供有关您的业务对象的很多信息,因此无法将其作为一个非常复杂的问题,因此我将做出一些假设。我的假设是:

  1. 你让eBay的克隆,因此你有两个相关的模型:ItemBid
  2. Item可以有多个投标
  3. Item有一个属性,reserve_price(小数点?)
  4. 一个Bid有一个属性,amount(也是十进制)

如果你只想创建出价符合它所属的Item的底价时,您需要使用自定义验证器。这是通过在您的模型中调用validate完成的,并在您的模型验证通过时将其传递给您要调用的方法的名称(作为符号)。像这样:

class Bid < ActiveRecord::Base 

    belongs_to :item 

    validate :ensure_meets_reserve_price 

    private 
    def ensure_meets_reserve_price 
     if amount < self.item.reserve_price 
      errors.add(:amount, "does not meet reserve price") 
     end 
    end 

end 

请记住,这是对您的需求做了很多假设,但希望这可以证明Rails的自定义验证器。在此示例中,如果为Bid指定的amount未达到Item的底价,则不会创建出价,并且会提供您可以向用户显示的错误消息。

+0

感谢您的回复!它的大学项目:)在几天内到期!如果消费者去我们的网站并可以看到产品,他们可以选择在不知道储备的情况下对该产品提供报价,因此基本上如果产品的rrp为100欧元,他们不知道我们的最低报价价格,所以他们然后提出55说,我们的最低价格是60所以它被拒绝,他们提出了60和它的接受等他们只有3提供可用等非常感谢!我强调了试图找出这部分! – user1529597 2012-07-16 20:25:59

+0

很高兴我能帮到你。确保在模型中执行此操作以及所有类似的与数据相关的操作,而不是控制器。保持该控制器瘦。祝你的项目好运。 – 2012-07-16 22:05:49

+0

干杯很多appricated!对我来说困难的部分是搞清楚把所有这些模型放在哪里哈哈:)只有几个星期的轨道! – user1529597 2012-07-16 22:38:03