【发布时间】:2014-10-24 15:09:32
【问题描述】:
我有一个具有“term”和“section”属性的 rails 模型。 我想对这些属性进行唯一性约束,所以我尝试了这个:
validates_uniqueness_of :term, scope: :section
这仅在 'term' 和 'scope' 都不是 nil 时有效,但我希望约束在存在 nil 值时仍然适用。查看 ActiveRecord::Validations docs,我看到将 'allow_nil' 设置为 false 将防止在 a 值为 nil 时跳过验证。但是这个选项的默认值已经是 false。
无论如何,我尝试将 allow_nil 设置为 false 和 true,但行为没有变化。有谁知道为什么当有 nil 值时我无法进行验证?
【问题讨论】:
-
将
:scope设置为:section的目的是什么? -
@Ali 对于
section具有相同值的所有记录,term必须是唯一的。 -
@user2745175 尝试更新 rails 或指定您使用的版本。如果 rails update 没有帮助,您的数据库版本也可能有用。我刚刚使用 Rails 4.1.6 和 PG 9.1 测试了您的案例,它可以按您的预期工作。
标签: ruby-on-rails ruby activerecord