本投稿の目的
Railsの操作をメモするために議事録として書いていきます。 以前書いた[Rubyの復習1](https://qiita.com/naoto911/items/f46b35f84cc80f59cac3),[Rubyの復習2](https://qiita.com/naoto911/items/3528067588e6884a80ba)のRails編です。学習に使った教材
Udemyの ["はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう"](https://www.udemy.com/course/the-ultimate-ruby-on-rails-bootcamp/) を教材として使用しました。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の値を表示できる