あるモデルを複数ファイに記述する

あるモデルが大きくなってきた時に、複数ファイルに記述する方法のメモ。

複数ファイルの読み込みの設定

# config/initializers/concerns.rb
class << ActiveRecord::Base
  def concerned_with(*concerns)
    concerns.each do |concern|
      require_dependency "#{name.underscore}/#{concern}"
    end
  end
end

モデルへの記述

例えば Product モデルの場合

# app/models/product.rb
class Product < ActiveRecord::Base
  concerned_with :separate
end

分割したファイルへの記述

# app/models/product/separate.rb
class Product
  def separated_func
    ...
  end
end

確認バージョン

  • Rails 4.2.6
カテゴリー: Model パーマリンク

コメントは停止中です。