我的模型中有这个代码:
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中的错误还是我做错了什么?
答案 0 :(得分:4)
找到了解决方案(https://github.com/thoughtbot/shoulda-matchers/issues/459),但我认为这不是最佳/正确的方法。只需添加allow_nil: true
。
那应该是这样的:
validates :user, presence: true, uniqueness: {scope: :project}, allow_nil: true