rails对特定控制器和操作的ActiveRecord验证

say*_*gun 6 validation activerecord ruby-on-rails

是否可以在给定的控制器和操作上运行ActiveRecord验证.

例如,我有user_controllersignup_controller

我只需要在signup_controller #create action上运行密码必需的验证

mar*_*ets 19

您可以使用if条件运行验证:

validates :email, presence: true, if: :validate_email?
Run Code Online (Sandbox Code Playgroud)

现在您需要定义此实例方法(在您的模型中):

def validate_email?
  validate_email == 'true' || validate_email == true
end
Run Code Online (Sandbox Code Playgroud)

validate_email属性可以是模型中的虚拟属性:

attr_accessor :validate_email
Run Code Online (Sandbox Code Playgroud)

现在,您可以根据该虚拟属性执行电子邮件验证.例如, signup_controller#create您可以执行以下操作:

def create
  ...

  @user.validate_email = true
  @user.save

  ...
end
Run Code Online (Sandbox Code Playgroud)