在带有Mongoid的Rails上使用validates_uniqueness_of时,应用程序崩溃了吗?

时间:2019-06-15 17:57:23

标签: ruby-on-rails-5 mongoid

我在Rails上使用Mongoid,并在模型validates_uniqueness_of :quote上添加了Quote

但是只要有重复的记录,应用程序就会崩溃,并显示以下消息:

  

消息:报价验证失败。摘要:以下错误   被发现:报价已被解决:尝试保持   包含有效数据的文档或删除验证。

这是我的模特

class Quote
  include Mongoid::Document
  field :quote, type: String
  field :author, type: String
  field :author_about, type: String
  field :tags, type: String

  validates_uniqueness_of :quote
end

这就是我想要做的:

if @quotedb.save!
    return true
else
    return false
end

它应该保存(如果唯一),如果不唯一则忽略,但绝不崩溃。

1 个答案:

答案 0 :(得分:1)

您的应用实际上并未崩溃,只是引发了异常。

调用save!方法时,!表示它将触发validation,并且当验证失败时,它将引发异常。

一种更好的方法是使用rescue处理异常,但是如果您不关心验证结果,请改用save