Thomas
(Thomas)
September 14, 2011, 4:02pm
1
Hi everybody,
I am creating a site, where people can register, but i only want them
to register, if they have a legit code. So let's say I give out the
three codes "code1", "code2" and "code3". How can I make sure, that
the user only gets registered, when the code gets vaildated?
Validate :registration_code => presence => true, ??? => ???
Do I have to write a custom method where I define all the possible
codes or how would you do it?
Thanks for your help!
Probably “validates_inclusion_of” can help you.
HTH,
Peter
The easiest way is probably to just define a custom method and use that for validation:
validate :registration_code_must_be_valid
def registration_code_must_be_valid
check if it’s one of the hard coded values
unless [ ‘code1’, ‘code2’ ].include?(registration_code)
errors.add(:registration_code, "must be valid")
end
or check if it’s in another model if you want to do it dynamically
unless RegistrationCode.find_by_code(registration_code)
errors.add(:registration_code, "must be valid")
end
end
Another option is to create a custom validator. Check out that section of the guide:
http://guides.rubyonrails.org/active_record_validations_callbacks.html#custom-validators