Ruby on rails 3.2 MyApp/lib/directory:如何正确使用它?

Ruby on rails 3.2 MyApp/lib/directory:如何正确使用它?,ruby-on-rails-3.2,Ruby On Rails 3.2,该指南介绍了/lib目录: lib/-应用程序的扩展模块 我在某个地方读到,我可以将我的自定义电子邮件验证程序类放在那里。那怎么用呢?如何要求它 现在我这样做: # File with validator: MyApp/lib/myEmailValidator.rb class EmailValidator def self.validate(email) ... end # In my "create" method, MyApp/app/controllers/hello_cont

该指南介绍了/lib目录:

lib/-应用程序的扩展模块

我在某个地方读到,我可以将我的自定义电子邮件验证程序类放在那里。那怎么用呢?如何要求它

现在我这样做:

# File with validator: MyApp/lib/myEmailValidator.rb
class EmailValidator
    def self.validate(email) ...
end

# In my "create" method, MyApp/app/controllers/hello_controller.rb
def create
    require "myEmailValidator"
    @result = EmailValidator.validate(params[:email_from_form])
end

它是有效的,但是有没有更好的方法来使用它呢?

如果你现在需要的只是验证,比如说电子邮件或其他什么,是的,有更好的实践

  • 这种逻辑应该在模型中,而不是控制器中。若你们想要客户端验证,你们可以使用Javascript,但并没有办法把它们放到控制器中

  • 对于模型中的验证,ActiveRecord有大量的内置方法。您可以在此处阅读:。对于电子邮件验证的特定问题,可以通过以下模式匹配完成:

    validates :email, presence: true, format: {with: /EMAIL_PATTERN_REGEX/}
    
  • 如果您需要的话,是关于如何扩展Rails核心的。您的方法可以工作,但最好使用模块或模块下的类来添加额外的命名空间并避免名称冲突