Ruby on Rails / Devise - Bypassing custom validation option in model when resetting password

前端 未结 3 1064
名媛妹妹
名媛妹妹 2021-02-06 05:00

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

3条回答
  •  北恋
    北恋 (楼主)
    2021-02-06 05:46

    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.

提交回复
热议问题