In my project, I altered the registration form in Devise to add an :agree option via an accessor (user must accept terms of service to register, etc). If they don\'t agree, it d
I prefer to base these kinds of things on whether or not the record is new (which is the only time the user will be "signing up").
class User < ActiveRecord::Base
validates :agree, :term_agreement => TRUE, :if => :signing_up?
# Return true if the user is currently signing up
def signing_up?
new_record?
end
end
The key is to keep in mind that the value of :if
and :unless
is "a method, proc or string to call to determine if the validation should [or should not] occur"--so you're free to define methods on your model for this purpose.