RailsにServiceを #296
Rails完全に飽きて来た。(書けるって言っているわけではない)
RailsでService
こんな記事とか
こんな記事でも触れられているように、複数のモデルをまたぐロジックとかをServiceに切り出すとモデルが短くなっていいよね、というのはもはやRails書く人たちにとっても共通認識になっているようで。
今書いているアプリ?で2つのActiveRecordモデルから日付順で取得してきたデータをマージしてソートする必要が出てきて、「今だ!」と思ってやってみた。
処理の内容的には大したことないので、moduleで以下のような感じで実装した。app/services
の下に置いた。
module ArticleListService def article_list(article_count = nil) # いろいろやってリストを返す処理 end module_function :article_list end
(リストを返す処理が思いっきり初歩的なミスでバグってたので中身は省略)
んで、使う側は
class WelcomeController < ApplicationController include ArticleListService def index @articles = article_list(5) end end
こんな感じ。
↑で紹介した記事なんかはClass使って実装してたので、規模がでかくなって来たらその方が良さそうですね。
雑談
ServiceってDDDの思想だったよなぁって。夏にDDD使ってインターンしてたんだけど、結局実際に使うことなくここまで来てしまってたと反省。
DDD本も買ったはいいけど最後まで読んでないし、中途半端になってること片っ端から片付けて圧倒的成長したいで。せっかく時間を作ったわけだし。