LoginSignup
40
39

More than 5 years have passed since last update.

長くなりがちなRailsのモデルをきれいに分割する (別解)

Posted at

ActiveSupport::Concernを使えば、若干ですが簡潔に書けます。

app/models/user.rb
class User < ActiveRecord::Base
   include User::Finder
end
app/models/user/finder.rb
module User::Finder
  extend ActiveSupport::Concern

  included do
    base.has_many :items
  end

  # クラスメソッドの定義
  module ClassMethods
    def hot
      ...
    end
  end

  # インスタンスメソッドの定義
  def search(str)
    ...
  end
end

ActiveRecord内部でもActiveSupport::Concernが頻繁につかわれていますね。

40
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
39