読んだので反復
MVC アーキテクチャ
Model
データに対する操作、ビジネスロジック
View
Modelの内容を参照し、視覚表現を行う
Controller
Model のロジック呼び出し、View の選択
モデル
あるシステムに必要な概念を探して、それに対して名前を付けたり、相互の関係性を整理したりすることをモデリングという。
ActiveRecord によるモデル
データベースに接続し、エンティティとDBのレコードを結びつける。
SQLや接続処理を抽象化する。
ビジネスロジック、バリデーション、コールバック処理が実装される。
QueryInterface
SQLのSELECTなどに対応したメソッドがある。
ActiveRecord::Relation
QueryInterface の結果として返されるオブジェクト。
どんなSQLを発行するか、という情報を持っている。
scope
モデルに定義できる。
よく利用する検索結果に名前をつけて、それを利用できる。
デフォルトで特定のScopeが適用された状態にすることも可能。
モデル同士のリレーション
一対一 -> has_one
一対多 -> has_many
多対一 -> belongs_to
多対多については、中間モデルを作って関係を表現する。
バリデーション
ActiveRecord、ActiveModel に機能として組み込まれている。
独自のバリデーションはブロックを使って書ける。
コールバック
レコードを作成して保存する一連の流れの様々な箇所で任意の処理を挟むことができる。
コールバックポイントが用意されており、バリデーションの前後、初期化後などが指定できる。
コールバック起動に条件を指定することができる。
ActiveRecord enums
Rails4.1 で追加された。
モデルのステータスを数値で保持でき、プログラム上では文字として読める。
コントローラ
config/routes.rb にルーティングの設定が記載されている。
この中に定義されたルーティングのパターンからマッチするものを探して、アクションを決定する。
表示するビューを決定する。
ビューのフォーマットを指定することができる。(html, csv, jsonなど)
アクションコールバック
コントローラのアクションにはコールバックを定義できる。
複数のアクションで行う処理を共通処理として切り出すことができる。
コールバックポイントが用意されており、アクション前、後、前後が指定できる。
コールバックをスキップすることもできる。
ルーティングとリソース
コントローラに resources :hogehoge
を書くと複数のルーティングが定義される。
resources
はブロック中に設定を追加することで拡張できる。
親子関係にあるリソースをルーティングで表現することができる。
member ブロックは、個別のリソースに対してアクションを設定できる。
collection ブロックは、全体のリソースに対してアクションを設定できる。
resources 以外のルーティングパターン
アプリケーション上、1つしか存在しないようなリソースをルーティングで定義する時には、resouce :hogehoge
と書く。
一覧表示や、IDによる絞り込みのアクションが定義されない。
特定のアクションのみを利用するようなルールの設定もできる。
例外処理
Railsアプリケーションでは基本的にコントローラが例外処理を行う。
特定の例外を投げると、それに対応するHTTPのステータスコードを返す仕組みがある。
rescue_from
というクラスメソッドを使い、特定の例外と例外時の処理を結びつける。
StrongParameters
Rails4 からモデル生成、更新時にHashクラスを使って一括で属性を設定できる機能がある。
これを Mass Assignment 機能という。
この機能を使用すると、ユーザーからのリクエストパラメータを全て一括でモデルに設定することができる。
その際、意図しない属性も書き換えられてしまうという脆弱性がある。
その脆弱性を防ぐための機能が StrongParameters である。
仕組みとしては、Mass Assignment 機能で設定できる属性を指定し、設定されたHashのkeyを事前に検査するというもの。
params.require(:user).permit(:name, :email)
のように指定する。
リクエストパラメータに:user
というkeyが必要で、かつ、user の中で受け付けて良い属性は、:name
と :email
のみという意味。

- 作者: すがわらまさのり,前島真一,近藤宇智朗,橋立友宏
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/06
- メディア: 大型本
- この商品を含むブログ (8件) を見る

- 作者: すがわらまさのり,前島真一,近藤宇智朗,橋立友宏
- 出版社/メーカー: 技術評論社
- 発売日: 2014/10/31
- メディア: Kindle版
- この商品を含むブログ (1件) を見る