java-ja.dddの終了後、本編で時間が無くて質問できなかった事、Rails4で規約に組込まれたconcernという横断的関心事と、Rubyでのモジュールを活用した振舞いの分離が、ドメインモデルを考える上でどう関わってくるのか、という疑問について、t_wadaさんに質問してみた際のやり取り。 長丁場のイベントが終わった後に、しっかり返答してくれたt_wadaさんに感謝!
最近、いわゆるRailsの古めのバージョンで書かれたプチレガシーな感じのアプリケーションを触っていて思ったこと。 ちなみに、この話題は多くの人にとって大分今更感のある内容なので、逆にこれを読んで「今更だなぁ、そんなのとっくに結論出てるでしょ」と思わない人はヤバい。 めんどくさいのでデータ永続化を行うためのミドルウェアはMySQLという前提で書く。 単純に言うと、いわゆるRailsアプリのMVCではMがActiveRecordかなんかを継承していて、そのまま作るとModelとtableが一対一対応になってしまう これだと、どのModelにも属さないようなビジネスロジックを置くべき場所がどこなのかよくわからない 「どのModelにも属さないようなビジネスロジックなんてないでしょ!」「どのModelにも属さないビジネスロジックがある時点で設計おかしいでしょ!」と思った人は幸福である。頭が。 ちな
Takuto Wada @t_wada @june29 伝統的には「関心事」ですかね…? Crosscutting Concern とか Core Concern とかの訳語に使われることが多いです。 2013-01-23 14:23:42 OHWADA Jun🚿 @june29 @t_wada 反応ありがとうございます!なんとなくわかってきたような気もしますが、なぜ ActiveSupport の中のこの Module が Concern という名前なのかは、まだ自分の言葉で説明できるほど腑に落ちてきていません…!引き続き考えてみます! 2013-01-23 14:29:38
FrogApps 技術ブログ始めました! RailsやiOS、HTML5の情報を発信中!! → http://qiita.com/teams/frogapps Railsでアプリを作っていると、app/models/以下にあるモデルファイルの行数が非常に長くなることになります。 そこでincludeメソッドを使ってモデルファイルを機能毎に分割してみましょう。 ファインダー関係のメソッドだけを、user/finder.rbに切り出します。 このときクラスメソッド関係は通常の定義方法が異なります。 クラスメソッドの定義は、ClassMethodsモジュールの中で行う様にします。 has_many, belongs_toなどのクラスメソッドの実行は、self.includedの中でbase.has_manyの様にして呼び出します。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く