MyApp / lib /目录:如何正确使用它?

时间:2013-04-16 13:24:35

标签: 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_controller.rb
def create
    require "myEmailValidator"
    @result = EmailValidator.validate(params[:email_from_form])
end

它有效,但是有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

如果您目前只需要验证,比如电子邮件或其他任何内容,是的,有更好的做法。

  1. 这种逻辑应该在Model而不是Controller中。如果您想要客户端验证,您可以使用Javascript,但无法将它们放入控制器。

  2. 为了在模型中进行验证,ActiveRecord拥有大量的内置方法。你可以在这里阅读:http://guides.rubyonrails.org/active_record_validations_callbacks.html。对于您的电子邮件验证的具体问题,可以通过这样的模式匹配来完成:

    validates :email, presence: true, format: {with: /EMAIL_PATTERN_REGEX/}
    
  3. 如果您需要关于如何扩展Rails核心。您的方法可行,但使用Module或Module下的Class可以更好地添加额外的命名空间并避免名称冲突。