Andri idee täpsustuseks mainin, et kasutada tuleb sel puhul muidugi ActiveModel::Validations'i, siis ei pea andmebaasi ja tabelit tekitama. Sarnase teema kohta on ka Railscastis juttu:
ActiveModel::Validations dokumentatsioonis on kõvasti häid näiteid, näiteks eraldi Validator klasside kirjutamine, millega sa saad grupeerida oma loogikat.
Muide, kui sa ei saa/taha atribuute defineerida (näiteks olemasolev struktuur sobib Hashi paremini vm keerulisemat) või Railsi validaatoritest ei saa nagunii kasu lõigata, siis võid lihtsalt oma kontrolli teha ja ‘errors.add(:key, “message")’ kasutada.
BTW, mingi message on vajalik, sest muidu üritab ta “key” nimelist atribuuti lähemalt uurida ja lõpetab veaga, samas ei pea sa seda message’it üldse kasutama, vaid võid piirduda hunniku erinevate võtmetega vigade loendamiseks:
require 'active_model'
class Data
include ActiveModel::Validations
validate do
errors.add(:checksum_mismatch, 'Checksum ei klapi’) # if checksum_mismatch
end
end
d = Data.new
d.valid?
# => false
d.errors.keys
# => [:checksum_mismatch]