4

Ruby onRails3.2.9を使用しています。カスタムバリデーターに関連する「'lib'ディレクトリのサブディレクトリでRailsを拡張する際の問題」を解決する方法は、次のコードを記述することでした(ファイルが配置されているディレクトリに注意してください)

# lib/extension/rails/custom_validator.rb
class CustomValidator < ActiveModel::EachValidator
  # ...
end

そしてconfig.autoload_paths += %W(#{config.root}/lib/extension/rails)、ステートメントをconfig/application.rbファイルに入れます。このようにしてCustomValidator、サーバーの起動時にが正しくロードされ、lib/ディレクトリが期待どおりに整理されます。

しかし、それがRoRでこのようなものを作るための「適切な」/「正しい」方法であるかどうかを知りたいと思います。言い換えれば、同じことを達成するためのより良いアプローチはありますか?


:コードをファイルに整理するために、次のようにクラスの名前空間を作成することを考えています。

# lib/extension/rails/custom_validator.rb
module Extension
  module Rails
    class CustomValidator < ActiveModel::EachValidator
      # ...
    end
  end
end

しかし、上記のコードを使用すると、ファイルに記述したCustomValidatorとしても、を機能させる簡単な方法はないようです。config.autoload_paths += %W(#{config.root}/lib)config/application.rb

4

2 に答える 2

0

多くの場合、カスタムバリデーターはアプリケーションドメインに属しています。したがって、最適な場所はですapp/validators。これについての素晴らしい投稿がここにありますhttp://blog.codeclimate.com/blog/2012/02/07/what-c​​ode-goes-in-the-lib-directory/

于 2012-12-16T22:34:12.517 に答える
0

lib/Rails拡張機能を必要とするディレクトリの下にファイルを作成できます。

# lib/extension.rb
require 'extension/rails/custom_validator'
于 2014-01-02T17:53:48.440 に答える