プログラミングときたまセッションに関連するロジックをモデルの中に作りたいときがある。ところが、原則的にRailsではセッションをモデルの中で操作することができない。この問題を解決する最も簡単な方法は、モデルに生やしたメソッドへセッションのインスタンスを渡す引数を追加し、それを経由してロジックを書くというものだ。endendこうすることで、やりたいことは実現できる。count)end...SRP(単一責任の原則)に則るこれによって、実際にやりたいことは実現されたが、上のコードはSRP(単一責任の原則)から見て必ずしも正しいものではない。基本的にはActiveRecordパターンであるRailsのモデルには、そのモデルが1:1で紐づく入出力すなわちデータベース・テーブルへの、アクセスオブジェクトとしての役割がある。セッションも見方を変えれば、小さく揮発性の高いストレージのひとつであるが、ひとつのモデルにいくつもの永続化のロジックが混入するのは責務の観点からみて適切ではない。した実装は、テストを書く際やアプリケーションのスケールの際に問題になりやすい。した問題を解決するひとつの方法として、セッションを扱うロジックをカプセル化し、責務を分離することで、疎結合な実装にすることができる。endendTempraryCardクラスを実装したことによって、コントローラは以下のようになる。TemporaryCart.new(session).add_itemend...セッションの永続化モジュールがモデルから分離されたことで、見通しの良いコードベースになった。モデルがそれ自体の正しい責務を守ることは「驚き最小の原則」にも則るという面で利点がある。Repositoryさーて、お待ちかねのROM.rb入門の第3回はRepositoryから。Relationさて、入門ROM.rbの第2回は、まずRelationから。ROM.rbとはな...2017-10-3110月にしたLTまとめ唐突に、この10月にした4つのLTに関して振り返ってみようと思う...2017-10-14SAMパターンの大雑把な理解SAMパターンというのを勉強している。(8)はてなブログをはじめよう!IzumiSyさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。