如何使轨道模型无效

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

当我购买产品时,我称之为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 

要处理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 

validation内容可能有效:

 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