指南说/ 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
它有效,但是有更好的方法吗?
答案 0 :(得分:0)
如果您目前只需要验证,比如电子邮件或其他任何内容,是的,有更好的做法。
这种逻辑应该在Model而不是Controller中。如果您想要客户端验证,您可以使用Javascript,但无法将它们放入控制器。
为了在模型中进行验证,ActiveRecord拥有大量的内置方法。你可以在这里阅读:http://guides.rubyonrails.org/active_record_validations_callbacks.html。对于您的电子邮件验证的具体问题,可以通过这样的模式匹配来完成:
validates :email, presence: true, format: {with: /EMAIL_PATTERN_REGEX/}
如果您需要关于如何扩展Rails核心。您的方法可行,但使用Module或Module下的Class可以更好地添加额外的命名空间并避免名称冲突。