2
Ich würde gerne wissen, ob ich eine Validierung schreiben kann, die die Eindeutigkeit eines Datensatzes basierend auf mehreren Feldern validieren würde. Mein Modell hat einen zusammengesetzten Primärschlüssel, das heißtWie validieren Sie Modelle mit einem zusammengesetzten Schlüssel in ActiveRecord?
field :houseno, :type => String
field :street, :type => String
field :boro, :type => String
Was eine gute Möglichkeit der Validierung der Einzigartigkeit dieser Rekord wäre?
Ich versuche, benutzerdefinierte Validatoren wie folgt zu verwenden:
class AddressValidator < ActiveModel::Validator
def validate(record)
record.errors[:base] << "This address is already in our records." unless check(record)
end
private
def check(record)
Address.find(:street=>record.street,:houseno=>record.houseno,:boro=>record.boro).length > 0
end
end
Danke, das funktioniert sehr gut. Sie können auch als validates ausdrücken: Hausno,: Länge => {: Minimum => 1,: Maximum => 6,: allow_blank => false,: allow_nil => true},: Eindeutigkeit => {: scope => [: Straße,: Boro]} – Avishai