2

Rails が app/helpers のモジュールをモデルに自動的にロードする方法に興味があります。

つまり、 app/helpers/widget_helper.rb が存在し、WidgetHelperそのモジュールが含まれている場合、ウィジェット モデルに自動的にロードされます。

モデルに含めるための任意のコードを含むアプリ内のディレクトリが必要であり、個々のモジュールをすべて含める必要を避けたいと考えています。この機能をモックすると便利だと思いました。

4

1 に答える 1

0

ヘルパーがどのように読み込まれるかはまだわかりませんが、 rails を考慮してこれを行う良い方法を見つけるのに時間を費やしましたconfig.after_initialize call

app/goods自動ロードされる ModelGoods という名前のモジュールを含むディレクトリが必要であるとします。次のコードを に追加しますapplication.rb

config.after_initialize do
  Dir["#{Rails.root}/app/goods/*_goods.rb"].each do |file|
    name = File.basename(file, ".rb").humanize.titleize.gsub(" ","")
    name.gsub("Goods","").constantize.send :include, "Goods::#{name}".constantize
  end
end

これにより、サブディレクトリ内のすべてのファイルが解析され、そのapp/goodsディレクトリに含まれる名前の付いたモデルのモジュールが含まれます。

明らかに、"Goods" を必要なものに置き換えることができますが、これは、作成するすべてのモジュールを手動で含める必要なく、コードを区分化する適切な方法を表しています。

于 2012-08-17T04:48:29.497 に答える