あるモデルが大きくなってきた時に、複数ファイルに記述する方法のメモ。
複数ファイルの読み込みの設定
# 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