Railsチュートリアル第2章
概要
Railsチュートリアル第2章を終えてのまとめ
次にrailsアプリを作成する時に付けそうなメモ
環境
AWS cloud9 を使用しました。
Scaffoldでモデル、コントローラ、ビューを作成
コマンド一つだけで全てを作ってくれる。
$ rails generate scaffold {モデル名} {カラム名}:{型}
例えば、string型のnameカラムとemailカラムを持つuserテーブルとそれに対応するモデル、コントローラ、ビューを作成する場合は下記を実行。
$ rails generate scaffold User name:string email:string
実行後にファイルがたくさん新規作成されていることが確認できる。
マイグレーションファイルも生成されているので、テーブルを作成する。これによって先ほどのコマンドでモデル名に指定した名前の複数形でテーブルが作成される。例の場合はusersテーブルが指定したカラムを持って作成される。
$ rails db:migrate
この状態で完成しているのでアプリを起動するとブラウザで確認できる。
$ rails server
MVCについて
Model
データベースとのやりとりを行う。具体的には、コントローラから指示のあった追加、取得、更新、削除を行う。
バリデーションや他テーブルとの連携についての定義ができる。
バリデーションはvalidates :{カラム名}, {条件}
のように記述する。 validates :name, length: {maximum: 10}
他テーブルとの連携は以下のように記述する。
テーブルの1つのデータが他テーブルの複数のデータと連携するhas_many :{テーブル名}
テーブルのデータが他テーブルの一つのデータと連携するbelongs_to :{テーブル名}
has_manyに対応するテーブルがbelongs_toとなる。(userテーブルの一人のユーザーがmicropostsテーブルの複数の投稿を持つ場合は、usersがhas_many :microposts
, micropostsがbelongs_to :users
となる)
Controller
ブラウザからのリクエストがルータによってコントローラのアクションが振り分けられる。
コントローラはデータベースの操作をモデルに依頼し、返却値やそれを整形したデータをビューに送る
ビューがデータを含めたhtmlをレンダリングしてコントローラに戻す。
コントローラがhtmlをブラウザに返却することで、ブラウザに表示される。
rubyの変数は@{変数名}。
@user = User.find(1)
View
コントローラから値を受け取り、htmlをレンダリングして返却する。
<p>ユーザー名: <%= user.name %></p>