web-dev-qa-db-fra.com

rails 3 validation sur l'unicité de plusieurs attributs

J'utilise Rails 3.0.0.beta4

Je veux ajouter une validation sur l'unicité de deux attributs, cela signifie que mon modèle est valide si le couple de 'recorded_at' et 'zipcode' est unique.

Sur un attribut, voici la syntaxe

validates :zipcode, :uniqueness => true

merci

174
denisjacquemin

Dans Rails 2, j'aurais écrit:

validates_uniqueness_of :zipcode, :scope => :recorded_at

Dans Rails 3:

validates :zipcode, :uniqueness => {:scope => :recorded_at}

Pour plusieurs attributs:

validates :zipcode, :uniqueness => {:scope => [:recorded_at, :something_else]}
324
Christian Lescuyer

Paramètres de portée multiples:

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

Cela devrait répondre à la question de Greg.

93
Ray

Ne travaille pas pour moi, il faut mettre scope in pluriel

validates_uniqueness_of: teacher_id,: scope s => [: semester_id,: class_id]

4
Jesus