LoginSignup
0
0

More than 3 years have passed since last update.

(自分用)Rails設計時(実装時)の注意点のまとめ

Posted at

Railsに限らないトピックも含まれそう

  • モデルとビューのどちらに実装しようか迷うときは、Decoratorパターンを検討する
  • モデルの共通化
    • Mix-inを使う場合は、 ActiveSupport::Concern を利用する
    • STI(単一テーブル継承)
      • 継承を利用して、似たようなActiveRecordモデルクラスの共通化を図る
      • 継承関係にある一連のモデルクラスはすべて1つのテーブルに対応付けられる
        • 各クラスのインスタンスに対応するレコードは、すべて同一のテーブルに格納される
        • 対応するテーブルには type というカラムを用意する必要がある
          • 各レコードが所属するクラス名が格納される
      • https://guides.rubyonrails.org/association_basics.html#single-table-inheritance
  • コントローラの共通化にMix-inを使う場合は、モジュールを app/controllers/concerns に配置する
  • ビューで使うユーティリティメソッドはカスタムヘルパーとして app/helpers に書く
    • 全てのビューから呼べるので、「小さく作る」「具体的に命名する」点に気をつける
    • コントローラとビューの間で共通的に利用したい処理は、コントローラにメソッドを定義し、それをコントローラで helper_method に指定することもできる
    • 特定のモデルに関する処理を書かないように注意し、そのような場合はモデルやDecoratorに寄せることを検討する
  • (複数のモデルが絡むような)特定の処理は専用のオブジェクトを作成する
    • サービスオブジェクト(サービスクラス)と呼ばれる設計パターン
    • 特定の処理一つのみに専念し、小さく作るようにする
    • モデルに書くべき処理をサービスに書かないように気をつける
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0