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が頻繁につかわれていますね。