コントローラーからロジックを抽出して、より DRY にできるようにしたいと考えています。Railsで次のようなものを処理する最良の方法は何ですか?
たとえば、コントローラーにクエリを配置するのではなく、モデルに配置できます。
class SmoothieBlender < ActiveRecord::Base
belongs_to :user
def self.get_blenders_for_user(user)
self.where(["user_id = ?", user.id])
end
end
それとも、サービス層としてモジュールを作成し、それを使用する各モデルに含めたほうがよいのでしょうか?
module BlenderUser
def get_blenders_for_user(user)
SmoothieBlender.where(["user_id = ?", user.id])
end
end
class SmoothieBlender < ActiveRecord::Base
include BlenderUser
belongs_to :user
end
class User < ActiveRecord::Base
include BlenderUser
has_many :smoothie_blenders
end
それとも、User および Blender コントローラーからアクセスできる本格的なサービス クラスにするだけですか? このクラスをどこに配置しますか?
class BlenderService
def self.get_blenders_for_user(user)
SmoothieBlender.where(["user_id = ?", user.id])
end
end
RubyとRailsは初めてなので、これがばかげた質問/構文が間違っている場合はご容赦ください。前もって感謝します!