Model
-
controllerの情報は参照しない
- よくあるのは、controllerで定義した
current_user
を参照してしまっていること。
- よくあるのは、controllerで定義した
-
viewに依存するロジックは記述しない
- DecoratorやHelperで記述する
Controller
- リクエストを受け取り、何らかの処理を行い、レスポンスを返すだけ
- インスタンス変数の代入はアクションメソッド(indexやnewなど)直下で行う
- before_actionやprivateメソッド内で代入すると可読性が下がってしまう
View
- 複雑なロジックが含まれると可読性が落ちるので、DecoratorやHelper、Modelでの記述を検討する
おまけ
Decorator
- Modelに依存する表示用のロジックを追加するモジュール
-
モデル名Decorator
という命名規則に従う
Helper
- Modelに依存しない表示用のロジックを記述する
- ただし、複数のモデルに依存する表示用のロジックを記述することもある
- 注意点
- Helperに定義したメソッドはネームスペースが無く、グローバルメソッドとして全てのViewから参照される
- インスタンス変数を参照しない。必要なデータは引数で受け取る。