本投稿の目的
Railsの操作をメモするために議事録として書いていきます。
以前書いたRubyの復習1,Rubyの復習2のRails編です。
学習に使った教材
Udemyの "はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう" を教材として使用しました。
Railsでの操作の流れ
以下の流れでproduct制作を進めていく
①新規プロジェクト作成
②dbの作成
③controllerとviewの作成
④modelとcolumn情報の作成
⑤dbへtableを作成
⑥dbの編集
⑦controllerの操作
①新規プロジェクト作成
rails _x.x.x_ new プロジェクト名
・新規railsプロジェクトを作成する
【解説】
○rails x.x.x new
⇨決まった記法
⇨x.x.x でversion を指定する
【x.x.yになってしまう場合】
・2桁目までのxはここで指定でいるが,3桁目のxが指定通りにならないことがある
・これはRailsが最新の安定verを推奨してgenerate実行するため
・この場合は別途Gemfileを書き換えてbundle updateを実施
○プロジェクト名
⇨自分で名称を設定してOK
②db領域の確保
rails db: create
・dbという空間を作成する
・このコマンドだけではtableは作成されてない
・これを実行しないと後で ⑤dbへtabelを作成,⑥dbの編集 が実行できないはず
③controllerとviewの作成
rails g controller コントローラー名(複数形) アクション名
・"controller"と"view"を生成
・view = htmlファイル と置き換えてOK
【解説】
○rails g model
⇨決まった記法
○コントローラー名
⇨コントローラー名はモデル名と揃える *(コントローラー名=複数系,モデル名=単数系)
⇨複数形で記述しないとroutingエラーになる
○アクション名
⇨複数羅列して書くことが可能
⇨アクションは,controllerから後で追加も可能
【アクションとは?】
・rubyでいうメソッドのこと
・ただし,urlへのアクセスをトリガーに自動で実行されるメソッドのこと
【作成されるファイル】
①controllerファイル
・app/controller/コントローラー名_controller.rb として生成される
・def アクション名 (①のcontroller内に生成)も自動で記述される
②viewディレクトリとviewファイル
・ここでの注意点は,viewはディレクトリとファイルの2つが生成されることに注意
・app/views/コントローラー名 というディレクトリが生成
・アクション名.html.erb というファイルが生成 (このディレクトリの中に生成)
・アクションを複数羅列しつ場合,その複数個分だけviewファイルが生成される (ディレクトリは一つ)
④modelとcolumn情報の作成
rails g model モデル名(単数形) column情報
・"migraionファイル"と"model定義ファイル" を生成
・ここで,model = class と置き換えてOK
・modelのcolumn情報もここで明記可能
【解説】
○rails g model
⇨決まった記法
○モデル名
・ターミナル では小文字でよい
・実際のモデルは1文字目は大文
○columon情報
⇨column名称:データ型 の順で作成
【作成されるファイル】
①migrationファイル
・db/migrate の中に生成される
・timestamp + create_モデル名.rb というファイル名
・データベース(db)のテーブル構造の編集ができる
・dbへ値の格納はしない
・演習ではノータッチだがここでcolumn追加編集も多分可能
・class名は 'Createモデル名s'
②modelファイル
・app/models の中に生成
・モデル名.rb というファイル名
・モデルクラスを定義したファイル
【ポイント】
・modelで作成したcolumnはcontrollerでインスタンス変数として使用可能
⑤dbへtableを作成
rails db:migrate
・これはただの実行処理で入力するだけ
・migrationで定義した指示をdbへtableとして反映させるための入力処理
⑥db編集
rails console
・ここで初めてdbに値を格納,編集,削除できる
・この演習では rails console でやった
・実際はviewから実行可能になるはず
【rails consoleとは?】
db処理について対話型でrails のコードを確認できる環境
【rails consoleのコマンドについて(登録編)】
rails console (rails c でも可能) 実行後に
○モデル名.all
⇨ モデルの中身を確認可能 (自動でsqlの操作を実行してくれる)
○変数 = モデル名.new
⇨ インスタンス生成
○変数.column名 = 値
⇨ columnに指定した値を格納
○変数.save
⇨ インスタンス生成後の内容をデーターベスに反映
○モデル名.find(n)
⇨ db内のn個目のインスタンスの情報を出力 (id=nとなるデータを探しにいく)
○変数 = モデル名(column名1: '値1' ,column名2: '値2' )
変数.save
⇨ 上記を1行で記述する方法
【rails consoleのコマンドについて(編集編)】
○変数 = モデル名.find(n)
○変数.column名 = 値
⇨変数は変更前の変数と同じでも問題ない
⇨値のところを変更前後で変えて上書き準備
○変数.save
⇨これで上書き処理が完了
【rails consoleのコマンドについて(削除編)】
<変数に格納後に実行する場合>
○変数 = モデル名.find(n)
○変数.destroy
<変数に格納前に実行する場合>
○モデル名.find(n)
⑦controllerの操作
【できること】
・urlの流れをコントロール
・db ⇆ view での値の共有
【railsの規約で事前設定済の処理】
・デフォルトでアクションが記載されている (def index)
・このアクションが実行されると,指定済のurlへアクセスしてくれる
・これらのうち "アクション作成" "urlの設定" はrailsの規約が事前設定済み
【人が実施する処理】
・モデル値を格納 (イメージはclassのインスタンス作成)
・これで,インスタンス変数が使用可能に (@usersなど)
・このインスタンス変数は,viewでも使用可能
・viewにインスタンス変数経由で値を表示可能に
【viewで使用する方法】
・配列として@usersに格納
・view内で,each do を使う
・これによって,1つずつcolumn情報をviewで出力可能 (userに格納)
【ポイント】
・controller で定義したインタンス変数は,viewで使用可能
【Controllerのコード】
class UsersController < ApplicationController
def index
@users = User.all
end
end
【viewのコード】
<ul>
<% @users.each do |user| %>
<li><%= user.id %>,<%= user.name %>,<%= user.age %></li>
<% end %>
</ul>
【出力結果】
1.naoto,24
2.naopiyo,20
3.kanopyo,27
dbの値を表示できる