LoginSignup
2
0

More than 3 years have passed since last update.

【Rails】コマンドの基本的な流れ

Last updated at Posted at 2020-11-05

本投稿の目的

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のコード】

qiita.rb
class UsersController < ApplicationController
  def index
    @users = User.all
  end
end

【viewのコード】

qiita.html.erb
<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の値を表示できる


2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0