0

给定一个用户模型,大致如下:

class User < ActiveRecord::Base

  acts_as_authentic do |config|
    config.validate_email_field = true
  end

end

我希望能够将“true”修改为特定于正在注册的用户。我希望能够做类似的事情:

class User < ActiveRecord::Base

  acts_as_authentic do |config|
    config.validate_email_field = ['dont@validate.me'].include?(instance_email)
  end

end

但 instance_email 在那里不可用。您是否必须覆盖用户模型上的方法才能访问此变量?如何才能做到这一点?

4

1 回答 1

3

您不能,因为 Authlogic 块是在加载类并且没有实例上下文时评估的。

您需要编写自己的验证器。

class User < ...

  validate :validate_email

  ...

  def validate_email
    if !['dont@validate.me'].include?(instance_email)
      # write here your validation logic
    end
  end 

end
于 2009-12-11T19:46:45.633 回答