验证存在和唯一性,rails 4

时间:2014-09-22 20:49:10

标签: activerecord ruby-on-rails-4

我的模型中有这个代码:

  validates :user, presence: true, uniqueness: {scope: :project}

个人验证者,存在和独特性,如果另一个不在那里,每个都可以正常工作。但如果它们都如上所述,那么presense验证器就会停止工作。当我尝试保存具有nil用户的对象时,我得到一个异常,而不是获得正常的保存错误:

NoMethodError:未定义的方法'属性' for nil:来自/usr/local/lib/ruby/gems/2.0.0/gems/activerecord-4.0.2/lib/active_record/validations/uniqueness.rb:56:in:build_relation'

的NilClass

这是ActiveRecord中的错误还是我做错了什么?

1 个答案:

答案 0 :(得分:4)

找到了解决方案(https://github.com/thoughtbot/shoulda-matchers/issues/459),但我认为这不是最佳/正确的方法。只需添加allow_nil: true

那应该是这样的:

validates :user, presence: true, uniqueness: {scope: :project}, allow_nil: true