ruby-on-rails - 如何使 Rails 模型无效

标签 ruby-on-rails ruby validation

我有一个独特产品的产品模型。所以当一个用户购买了这个模型后,没有人可以再次购买它,卖家不能和买家是同一个人。

当我购买产品时,我调用方法 product.buy(buyer)。但是当buyer = seller 和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

关于ruby-on-rails - 如何使 Rails 模型无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4920829/

相关文章:

ruby-on-rails - 如何使用连接表制作多模型 tag_cloud?

ruby-on-rails - 在 RUBY 中检测到隐藏 BOM 字符时如何引发错误

ruby - $之间的区别!与救援变量

java - Torrent 库允许下载单独的文件片段

mysql - Rails:ActiveRecord::UnknownPrimaryKey 异常

c# - 在 UserControl 中显示验证错误

ruby-on-rails - Redis::CannotConnectError(连接到本地主机上的 Redis 时出错:6379(Errno::ECONNREFUSED)):

javascript - 在 javascript 中验证表单的更好方法

java - 模式验证中的正则表达式

ruby-on-rails - 如何在 ruby​​ 1.9 上运行 Rails 1.2.5 应用程序?