【发布时间】:2011-03-17 14:36:09
【问题描述】:
我使用 Rails 3.0.0.beta4
我想在两个属性上添加唯一性验证,这意味着如果 'recorded_at' 和 'zipcode' 这对是唯一的,我的模型是有效的。
这里有一个属性是语法
validates :zipcode, :uniqueness => true
谢谢
【问题讨论】:
我使用 Rails 3.0.0.beta4
我想在两个属性上添加唯一性验证,这意味着如果 'recorded_at' 和 'zipcode' 这对是唯一的,我的模型是有效的。
这里有一个属性是语法
validates :zipcode, :uniqueness => true
谢谢
【问题讨论】:
在 Rails 2 中,我会这样写:
validates_uniqueness_of :zipcode, :scope => :recorded_at
在 Rails 3 中:
validates :zipcode, :uniqueness => {:scope => :recorded_at}
对于多个属性:
validates :zipcode, :uniqueness => {:scope => [:recorded_at, :something_else]}
【讨论】:
recorded_at 在邮政编码范围内是唯一的更有意义。 validate :recorded_at, : uniqueness => { :scope => :zipcode }
validates :zipcode, :uniqueness => {:scope => [:recorded_at, :something_else]}验证一组三人吗?
:scope,你需要使用 :fkey_id 符号,而不是 :fkey 符号,即使是“基本”:uniqueness工作于:fkey
, :message => ' is taken for this recorded date'
class TeacherSchedule < ActiveRecord::Base
validates_uniqueness_of :teacher_id, :scope => [:semester_id, :class_id]
end
http://apidock.com/rails/ActiveRecord/Validations/ClassMethods/validates_uniqueness_of
这应该回答了格雷格的问题。
【讨论】:
不要为我工作,需要将 scope 放入 复数
validates_uniqueness_of :teacher_id, :scopes => [:semester_id, :class_id]
【讨论】: