Rails 3 Validation for special values

7 views
Skip to first unread message

Thomas

unread,
Sep 14, 2011, 12:02:38 PM9/14/11
to Ruby on Rails: Talk
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!

Peter Vandenabeele

unread,
Sep 14, 2011, 4:31:18 PM9/14/11
to rubyonra...@googlegroups.com
Probably "validates_inclusion_of" can help you.

HTH,

Peter

Tim Shaffer

unread,
Sep 14, 2011, 4:35:12 PM9/14/11
to rubyonra...@googlegroups.com
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:
Reply all
Reply to author
Forward
0 new messages