0

ガイドは、 /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

それは機能しますが、それを使用するより良い方法はありますか?

4

1 に答える 1

0

現時点で必要なのは検証に関するものだけである場合、たとえば電子メールやその他のことを言うと、はい、より良い方法があります。

  1. このようなロジックは、コントローラーではなくモデルにある必要があります。クライアント側の検証が必要な場合は、Javascript を使用できますが、それらをコントローラーに入れる方法はありません。

  2. モデルでの検証のために、ActiveRecord には多数の組み込みメソッドがあります。ここで読むことができます: http://guides.rubyonrails.org/active_record_validations_callbacks.html . メール検証の特定の問題については、次のようなパターン マッチによって実行できます。

    validates :email, presence: true, format: {with: /EMAIL_PATTERN_REGEX/}
    

Railsコアの拡張方法についてです。メソッドは機能しますが、モジュール、またはモジュールの下のクラスを使用して名前空間を追加し、名前の競合を回避することをお勧めします。

于 2013-04-16T15:28:50.153 に答える