如何使轨道模型无效

时间:2011-02-07 11:36:02

标签: ruby-on-rails ruby validation

我有一个独特产品的产品型号。因此,当用户购买此型号时,没有人可以再次购买,卖家不能与购买者相同。

当我购买产品时,我称之为product.buy(买方)方法。但是当买方=卖方和date.sale!= nil时,此方法应该使模型无效。但这不起作用。我该如何解决?

   def buy(buyer)
    if self.user != buyer

      if self.date_sale.nil? 
        self.date_sale = Time.now
        self.buyer = buyer
      else
        # self.errors.add(:buyer, "article bougth") # Dont't work
      end             
    else
       # self.errors.add(:buyer, "seller can not buyer") # Dont't work
    end  
  end

2 个答案:

答案 0 :(得分:5)

要处理nil date_sale,请在模型顶部添加:

validate_presence_of :date_sale

检查买家!=卖家是否可以

validate :buyer_is_not_seller

def buyer_is_not_seller
  errors.add(:buyer, "shouldn't be seller") if buyer.id == seller.id
end

答案 1 :(得分:0)

验证内容可能有效:

class Domain
  validates_presence_of :name, on: :renew
end

domain = Domain.new
domain.valid?(:renew) # false

http://api.rubyonrails.org/classes/ActiveModel/Validations.html#method-i-valid-3F