ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ まとめ

#開発の流れ
1. アプリケーションを作成
>
```bash:Terminal
$ rails new プロジェクト名
```
例）ブログアプリを作る（blogプロジェクト）
　　`$ rails new blog`

1. Modelを作成
>
```bash:Terminal
$ rails generate model オブジェクトのモデル名（単数形） カラム名1:データ型1 ・・・ カラム名n:データ型n
```
例）ブログアプリのポストモデルを作る（Postモデル）
　　【カラム】title: string型, content: text型
　　`$ rails g model Post title:string content:text`

1. DBの設定
>
```bash:Terminal
$ rake db:migrate
```

1. Controllerを作成
>
```bash:Terminal
$ rails g controller オブジェクトのコントローラ名（複数形）
```
例）ブログアプリのポストコントローラを作る（Postsコントローラ）
　　`$ rails g controller Posts`

1. ルーティングを設定
>1. config/routes.rbを編集 [（詳細）](http://railsdoc.com/routes "（詳細）")
>
>1. 
```bash:Terminal
$ rake routes
```

1. Controller内にMethodを作成
>
>```ruby:app/controllers/コントローラ名_controller.rb
># coding: utf-8
>
>class コントローラ名Controller < ApplicationController
>    # メソッド１
>    def メソッド名
>        # 処理
>    end
>    # メソッド２
>    def メソッド名
>        # 処理
>    end
>    # メソッド３
>    def メソッド名
>        # 処理
>    end
>end
>```

1. 必要であればそれに対応するViewも作成、編集
>
```bash:Terminal
$ touch app/views/コントローラ名/ビュー名.html.erb
```

1. 2〜7を機能分繰り返す
>モデル同士でリレーションシップ（関係）があり、アソシエーション（組織）を作る場合は以下を参照のこと
>
>* [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (37〜46)/全46](http://qiita.com/hirokishirai/items/a25da39da0e6b32246ed "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (37〜46)/全46")
>* [1対1のリレーションシップ](http://railsdoc.com/model#1%E5%AF%BE1%E3%81%AE%E3%83%AA%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B7%E3%83%83%E3%83%97 "1対1のリレーションシップ")
>* [1対多のリレーションシップ](http://railsdoc.com/model#1%E5%AF%BE%E5%A4%9A%E3%81%AE%E3%83%AA%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B7%E3%83%83%E3%83%97 "1対多のリレーションシップ")
>* [多対多の関連を宣言(has_and_belongs_to_many)](http://railsdoc.com/model#%E5%A4%9A%E5%AF%BE%E5%A4%9A%E3%81%AE%E9%96%A2%E9%80%A3%E3%82%92%E5%AE%A3%E8%A8%80(has_and_belongs_to_many) "多対多の関連を宣言(has_and_belongs_to_many)")

#よく参照しそうなURL
###Railsリファレンス
####[Ruby on Railsドキュメント](http://railsdoc.com/ "Ruby on Railsドキュメント")
* Railsを網羅できます。たぶん。
* [モデル(model)](http://railsdoc.com/model "モデル(model)")
* [ビュー(view)](http://railsdoc.com/view "ビュー(view)")
* [コントローラ(controller)](http://railsdoc.com/controller "コントローラ(controller)")

###HTMLリファレンス 
####[とほほのＷＷＷ入門-HTMLリファレンス](http://www.tohoho-web.com/html/index.htm "とほほのＷＷＷ入門-HTMLリファレンス")
* HTMLを網羅できます。たぶん。

###jQueryリファレンス
####[Railsドキュメント-jQuery](http://railsdoc.com/references/jQuery "Railsドキュメント-jQuery")
>RailsのjQueryリファレンス

###SQLite3リファレンス
####[Railsドキュメント-SQLite](http://railsdoc.com/references/SQLite "Railsドキュメント-SQLite")
>Railsのsqlite3リファレンス

####[SQLite が認識できる SQL](http://net-newbie.com/sqlite/lang.html "SQLite が認識できる SQL")
>SQLite3をほぼ網羅しています。

###エラーが出たら
####[google検索](google.com "google検索")
* 人に聞く前に検索窓に聞く。

####[日本 Railsメーリングリスト 過去ログ](http://www.fdiary.net/ml/rails/ "日本 Railsメーリングリスト 過去ログ")

* とにかく情報がいっぱい。検索すれば何かしら出てきます。 

####[[OFFICIAL]Ruby on Rails](http://rubyonrails.org/ "[OFFICIAL]Ruby on Rails")
* Ruby on Rails公式サイトです。更新情報を確認しましょう。アップデートで使えなくなったメソッドなどなど、エラーの原因は色々です。

###更新情報が知りたい
####[[OFFICIAL]Ruby on Rails](http://rubyonrails.org/ "[OFFICIAL]Ruby on Rails")

* Ruby on Rails公式サイトで確認できます。

###コードの実例が見たい
####[Ruby on Railsドキュメント](http://railsdoc.com/ "Ruby on Railsドキュメント")
* ほんとにいろいろあります。いろいろ。便利です。
####http://api.rubyonrails.org/

###本当にお手上げ、誰か教えて
####[日本 Railsメーリングリスト](http://wiki.fdiary.net/rails/ "日本 Railsメーリングリスト")
* すごい人たちがすごい会話してます。初心者にも優しい暖かいメーリスです。先輩方に敬意を持って質問します。
* 登録方法はリンク先にあります。

####[Stack Overflow](http://stackoverflow.com/ "Stack Overflow")
* 稼働率MAXです。我らゆとり勢も恐れずに、英語ができなくてもgoogle翻訳でなんとかなります。google翻訳を使う場合は、日本語をなるべく主語述語を使って書いて、翻訳結果をある程度修正してから投稿しましょう。英語、勉強しましょう。

####[QA@IT](http://qa.atmarkit.co.jp/ "QA@IT")
* Stack Overflowの日本版です。稼働率はかなり低いです。でも、ここのユーザーは確かな技術を持った先鋭たちのような気がします。回答が神のようです。

####[Qiita](http://qiita.com/ "Qiita")
* ここです。みんなで議論するのもアリだと思います。


###Railsの概念・チュートリアル
####[[OFFICIAL]Ruby on Rails Guides](http://guides.rubyonrails.org/ "[OFFICIAL]Ruby on Rails Guides")

* 簡単なチュートリアル
* MVCフレームワークに関する丁寧な説明

####[Ruby on Railsドキュメント](http://railsdoc.com/ "Ruby on Railsドキュメント")
* Railsを網羅できます。たぶん。

#メモ一覧
1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (1〜2)/全46](http://qiita.com/hirokishirai/items/34d26a40f99425333f79 "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (1〜2)/全46")
>[#01	Ruby on Railsとは何か？](http://dotinstall.com/lessons/basic_rails/6501 "#01	Ruby on Railsとは何か？")
[#02	必要となるツールを揃えよう](http://dotinstall.com/lessons/basic_rails/6502 "#02	必要となるツールを揃えよう")
>
>* Ruby on Railsはこんなものですよ
>* 必要な情報はここら辺で集まりますよ
>* 必要な知識にはこんなものがありますよ
>* 開発環境はこんな感じですよ

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ 3/全46](http://qiita.com/hirokishirai/items/e0d3a7aa1de02ca2dbfc "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ 3/全46")
>[#03	MVCとは何か？](http://dotinstall.com/lessons/basic_rails/6503 "#03	MVCとは何か？")
>
>* Ruby on RailsはMVCフレームワークですよ
>* MVCはこんなものですよ

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (4〜8)/全46](http://qiita.com/hirokishirai/items/0038bbe5cd35ca92d60f "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (4〜8)/全46")
>[#04 はじめてのRailsプロジェクト](http://dotinstall.com/lessons/basic_rails/6504 "#04 はじめてのRailsプロジェクト")
[#05 ファイル構成をみていこう](http://dotinstall.com/lessons/basic_rails/6505 "#05 ファイル構成をみていこう")
アプリケーションを作成する基本的な流れを覚えましょう
>
>[#06 Webサーバーを立ち上げよう](http://dotinstall.com/lessons/basic_rails/6506 "#06 Webサーバーを立ち上げよう")
作成したWebアプリケーションをどうささせてみましょう
>
>[#07 scaffoldを使ってみよう (1)](http://dotinstall.com/lessons/basic_rails/6507 "#07 scaffoldを使ってみよう (1)")
[#08 scaffoldを使ってみよう (2)](http://dotinstall.com/lessons/basic_rails/6508 "#08 scaffoldを使ってみよう (2)")
DB、Model、View、Controllerの作成、URLの設定をしてみましょう

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (9〜13)/全46](http://qiita.com/hirokishirai/items/3c756d65fa837f765dc9 "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (9〜13)/全46")
>[#09 ブログシステムを作ろう](http://dotinstall.com/lessons/basic_rails/6509 "#09 ブログシステムを作ろう")
[#10	新しいプロジェクトを作ろう](http://dotinstall.com/lessons/basic_rails/6510 "#10	新しいプロジェクトを作ろう")
[#11	Postモデルを作ろう](http://dotinstall.com/lessons/basic_rails/6511 "#11	Postモデルを作ろう")
[#12	Postsコントローラーを作ろう](http://dotinstall.com/lessons/basic_rails/6512 "#12	Postsコントローラーを作ろう")
[#13	ルーティングの設定をしよう](http://dotinstall.com/lessons/basic_rails/6513 "#13	ルーティングの設定をしよう")
Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）
プロジェクト、Model、Controllerを作成し、ルーティングの設定をしよう

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (14〜21)/全46](http://qiita.com/hirokishirai/items/9c9b02311a95fb6a2e5d "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (14〜21)/全46")
>[#14	デバッグに使えるコンソールについて](http://dotinstall.com/lessons/basic_rails/6514 "#14	デバッグに使えるコンソールについて")
[#15	コントローラーのメソッドについて](http://dotinstall.com/lessons/basic_rails/6515 "#15	コントローラーのメソッドについて")
[#16	記事の一覧を表示する (1)](http://dotinstall.com/lessons/basic_rails/6516 "#16	記事の一覧を表示する (1)")
[#17	記事の一覧を表示する (2)](http://dotinstall.com/lessons/basic_rails/6517 "#17	記事の一覧を表示する (2)")
[#18	リンクを貼ってみよう](http://dotinstall.com/lessons/basic_rails/6518 "#18	リンクを貼ってみよう")
[#19	HTMLテンプレートを変更しよう](http://dotinstall.com/lessons/basic_rails/6519 "#19	HTMLテンプレートを変更しよう")
[#20	ロゴ画像を表示させてみよう](http://dotinstall.com/lessons/basic_rails/6520 "#20	ロゴ画像を表示させてみよう")
[#21	記事一覧画面をrootにしてみよう](http://dotinstall.com/lessons/basic_rails/6521 "#21	記事一覧画面をrootにしてみよう")
>
>Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
`rails console`とか、`rails dbconsole`なんかの便利なツールがありますよ
コントローラーのメソッドと、それに対応するViewを作っていきましょう
>
>Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。（まずは１つ）

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (22〜23)/全46](http://qiita.com/hirokishirai/items/ba9bea6679ca1a1f8629 "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (22〜23)/全46")
>[#22	記事の詳細を表示する (1)](http://dotinstall.com/lessons/basic_rails/6522 "#22	記事の詳細を表示する (1)")
[#23	記事の詳細を表示する (2)](http://dotinstall.com/lessons/basic_rails/6523 "#23	記事の詳細を表示する (2)")
>
>Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
>
>* コントローラーのメソッドと、それに対応するViewを作っていきましょう（続き）
>* Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。（続き - show）

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (24〜30)/全46](http://qiita.com/hirokishirai/items/979a1ca68716698ec103 "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (24〜30)/全46")
>
[#24 新しい記事を追加しよう (1)](http://dotinstall.com/lessons/basic_rails/6524 "#24 新しい記事を追加しよう (1)")
[#25	新しい記事を追加しよう (2)](http://dotinstall.com/lessons/basic_rails/6525 "#25	新しい記事を追加しよう (2)")
[#26	新しい記事を追加しよう (3)](http://dotinstall.com/lessons/basic_rails/6526 "#26	新しい記事を追加しよう (3)")
[#27	バリデーションを設定しよう](http://dotinstall.com/lessons/basic_rails/6527 "#27	バリデーションを設定しよう")
[#28	バリデーションエラーを表示しよう](http://dotinstall.com/lessons/basic_rails/6528 "#28	バリデーションエラーを表示しよう")
[#29	フラッシュメッセージを表示する](http://dotinstall.com/lessons/basic_rails/6529 "#29	フラッシュメッセージを表示する")
[#30	メッセージをjQueryで消す](http://dotinstall.com/lessons/basic_rails/6530 "#30	メッセージをjQueryで消す")
>
Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
>
>* コントローラーのメソッドと、それに対応するViewを作っていきましょう（続き）
>* Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。（続き - new,create）
>
>記事のタイトル一覧を表示するindexメソッド、その記事を表示するshowメソッドは完成したので次はその記事を表示するページが欲しいですね。ということでnewメソッド（新規作成フォーム）を作ります。また、フォームから送信されたデータを処理して新しい記事を作成するcreateメソッドも作成します。
>
バリデーション（検査）の設定をやってみよう（実践的）

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (31〜33)/全46](http://qiita.com/hirokishirai/items/3c0552e258b2f7d5defc "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (31〜33)/全46")
>
[#31	記事を更新してみよう (1)](http://dotinstall.com/lessons/basic_rails/6531 "#31	記事を更新してみよう (1)")
[#32	記事を更新してみよう (2)](http://dotinstall.com/lessons/basic_rails/6532 "#32	記事を更新してみよう (2)")
[#33	記事を更新してみよう (3)](http://dotinstall.com/lessons/basic_rails/6533 "#33	記事を更新してみよう (3)")
>Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
>
>* コントローラーのメソッドと、それに対応するViewを作っていきましょう（続き）
>* Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。（続き - edit, update）
>
>記事のタイトル一覧を表示するindexメソッド、その記事を表示するshowメソッド、記事の新規作成フォームを作成するnewメソッド、記事を作成するcreateメソッドは完成したので次はその記事を編集するページが欲しいですね。ということでeditメソッド（記事編集フォーム）を作ります。また、フォームから送信されたデータを処理して記事を上書きするupdateメソッドも作成します。
1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (34〜36)/全46](http://qiita.com/hirokishirai/items/cf4cc479b09d35501fc3 "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (34〜36)/全46")
>
[#34	記事を削除してみよう](http://dotinstall.com/lessons/basic_rails/6534 "#34	記事を削除してみよう")
[#35	削除処理をAjax化しよう (1)](http://dotinstall.com/lessons/basic_rails/6535 "#35	削除処理をAjax化しよう (1)")
[#36	削除処理をAjax化しよう (2)](http://dotinstall.com/lessons/basic_rails/6536 "#36	削除処理をAjax化しよう (2)")
>Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
>
>* コントローラーのメソッドと、それに対応するViewを作っていきましょう（続き）
>* Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。（続き - destroy）
>
>記事のタイトル一覧を表示するindex、その記事を表示するshow、記事の新規作成フォームを作成するnew、記事を作成するcreate、記事を編集するeditは完成したので次はその記事を削除するページが欲しいですね。ということでdestroyを作ります。

1. [ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (37〜46)/全46](http://qiita.com/hirokishirai/items/a25da39da0e6b32246ed "ドットインストールでRuby on Rails 3.2を学んだ際の詳細なメモ (37〜46)/全46")
>
[#37	Commentモデルを作ろう](http://dotinstall.com/lessons/basic_rails/6537 "#37	Commentモデルを作ろう")
[#38	Commentsコントローラーを作ろう](http://dotinstall.com/lessons/basic_rails/6538 "#38	Commentsコントローラーを作ろう")
[#39	コメントを表示させよう](http://dotinstall.com/lessons/basic_rails/6539 "#39	コメントを表示させよう")
[#40	コメントを投稿してみよう (1)](http://dotinstall.com/lessons/basic_rails/6540 "#40	コメントを投稿してみよう (1)")
[#41	コメントを投稿してみよう (2)](http://dotinstall.com/lessons/basic_rails/6541 "#41	コメントを投稿してみよう (2)")
[#42	バリデーションを設定しよう](http://dotinstall.com/lessons/basic_rails/6542 "#42	バリデーションを設定しよう")
[#43	コメントを削除してみよう (1)](http://dotinstall.com/lessons/basic_rails/6543 "#43	コメントを削除してみよう (1)")
[#44	コメントを削除してみよう (2)](http://dotinstall.com/lessons/basic_rails/6544 "#44	コメントを削除してみよう (2)")
[#45	コメント件数を表示してみよう](http://dotinstall.com/lessons/basic_rails/6545 "#45	コメント件数を表示してみよう")
[#46	Railsを日本語化しよう](http://dotinstall.com/lessons/basic_rails/6546 "#46	Railsを日本語化しよう")
>Scaffoldを使わずに、一からブログアプリケーションを作成しよう（実践的）（続き）
>
>* 新しい機能（Comment）を追加させましょう
>* Scaffoldでは自動生成してくれたModel、DBの設定、Controller、URL、Controllerのメソッド、Viewを自力で作ります。


#Railsを完璧に理解する？
Railsを完璧に理解するには相当な努力が必要そうです。
Ruby、MVCフレームワーク、ActiveRecord、データベース、HTTP、HTML、CSS、javascript、jQuery・・・（ぁゎゎ...
だからフレームワークなんてくそだ！といって、ゼロからシステムを作成する友人もいます（フレームワークの設計から自作なのでそれはそれで面倒だと思うのですが・・・）。
しかし完璧に理解する必要は無く、基本的な概念と使い方がわかっていればいいんだと思います。フレームワークですから。
フレームワークはたくさんの人が用意してくれた部品（ヘルパー、ライブラリ）を使って作品を完成させるものです。車の部品を組み立てる人がその部品の内部でどんな風に動作するんだろうなんて考える人はほとんどいません。いたらかなりのマニアでしょう。考えなくても部品が部品に求められている動作をするということを知っていれば良いのです。そして、部品を探しても無ければ自分で作る。Railsリファレンス片手に作っていけばいいんじゃないでしょうか。使っていれば使い方を覚えて開発もどんどんスムーズになっていくと思います。