Rails uniqueness 中的 scope 问题求解释?

runup · 2014年04月23日 · 最后由 runup 回复于 2014年04月23日 · 2554 次阅读

在阅读 gudide 和阅读《Rspec》遇到下面的代码:

class Holiday < ActiveRecord::Base
    validates :name, uniqueness: { scope: :year,
    message: "should happen once per year" }
end

scope 的意思是说:scope 选项可以指定其他属性,用来约束唯一性验证,其实自己不太理解,一般情况下直接用:

validates :email, uniqueness: true

直接就好了呗,用 scope 的意义在哪里呢? 《Rspec》中的代码如下所示:

validates :phones, uniquess:{scope:contact_id}

我也不太理解这个东西有啥作用,能否请看得比较透彻的人解释下?

不写 scope 是全表唯一约束,否则是 scope 结果集的唯一约束

#1 楼 @winnie 能具体一点不?比如说这条语句如何解释

validates :phones, uniquess:{scope:contact_id}

:scope - One or more columns by which to limit the scope of the uniqueness constraint.

validates :phones, uniquess:{scope:contact_id}

限定 contact_id 字段相同的 phones 唯一性

validates_uniqueness_of :phones, scope: :contact_id 和这句是一样的 就是验证 phones 是否重复时,只检查相同 contact_id 的数据。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号