Rails 3 Validation for special values

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!

On Wed, Sep 14, 2011 at 6:02 PM, Thomas
[email protected]wrote:

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?

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