今日もRailsの勉強をした。9章、10章、11章。
学んだことを列挙しておく。
- 商品とカートの関連付けを行なう
- modelにbefore_destroyをつけてメソッドを指定し、削除前に色々な条件を設定することが可能。
- sessionを使うには、session[:hoge]のようにハッシュで。
- modelにvalidatesを定義する
- マイグレーションでテーブル定義の変更が可能。
追加はadd_XXX_to_TABLE
削除はremove_XXX_from_TABLE - 値のデフォルト指定は default: XXX で行なう。
- Railsが察してくれないマイグレーションの場合は、upメソッドとdownメソッドを実装する
- upメソッドがdb:migrateで、downメソッドがdb:rollbackで実行される
- エラー処理。想定外の値が指定されたらActiveRecord::RecordNotFoundの例外を拾って処理。
- 部分テンプレート化。_line_item.html.erbのように、先頭に_を付けることで通常のテンプレートと分ける
- Ajax。button_to に remote: trueを追加するだけでよい。
- hoge.js.erbを作成し、そちらで実行されるJavaScriptを作っておくなど。
- 必ずAjaxなしで作ったあと、Ajaxを実装すること。
- ページを開いたときに実行させるようなJavaScriptはCoffeeScriptで作成する
- Viewにややこしいロジックをもってきて可読性が落ちそうな場合は必ずヘルパーメソッドを実装する
デグレを起こさせないためにも、Ajaxなしで実装したあとに、Ajaxを実装するという手順を踏むほうがよいことがわかった。今までの場合は、無駄を失くすためにすぐAjaxで実装していたけれど、こちらのほうがAjaxが使えない環境の場合も考慮した実装ができるのでいい。