kekosh’s Study_Log

勉強の記録と日記

勉強ログ ~15/55~

祝日も粛々とカリキュラムを進めています。(途中読書に脱線したのはおいといて)

 

Lesson6でとうとう本格的にRailsを使ったプログラミングが始まりましたが、一気に覚える量が増えたので、おっさんには中々覚えきれないです。

懐かしや20代までの記憶力...(バカなのは今も昔も一緒です。)

 

コンソールだけでもrailsSQLiterubyと種類があって、どのコマンドがどのコンソールのものだったか、使おうとするたびに「どれだっけ」となってしまいます。

 

慣れの部分もあるでしょうが、先が思いやられる感じです。

 

とりあえずここから先は、実際に作成してビルドして確認することが増えてくるので、実践の中で覚えていければと思います。

 

『時間は寸分の狂いもなく確実に与えられるが、その量は冷酷なまでに限定されている。』

 

時間:15:00~16:00、18:30~19:30、21:30~23:30

メモ:

・新規プロジェクトの作成
rails new
・サーバーの起動
rails s

・Gitリポジトリの初期化
1.git init ・・・ リポジトリの作成
2.git add . ・・・ ローカルリポジトリにプロジェクトのファイルをすべて反映
3.git commit -m "Message" ・・・ コミットメッセージ付きでコミット
4.git remote add origin "GitのプロジェクトURL" ・・・初回のみ。反映先リポジトリの設定
5.git push origin master ・・・ ローカルのコミット内容をリモートリポジトリに反映

・コントローラーの作成
rails generate controller コントローラ名 アクション名
(例)rails generate controller messages index
→モデルを扱うコントローラの名称は、複数形に英単語で命名する。

・ルーティング
外部からのリクエストをどのようにコントローラとアクションに振り分けるかのルールを
「ルーティング」と呼び、「config/routes.rb」に記述する。

・ルーティングの確認
rake routes

・rootディレクトリを指定した場合のアクセス先を変更する。
root "コントローラ名#アクション名"

・モデルの作成
rails generate model モデル名 列名:データ型,…
(例)rails generate model Message name:string,body:string
→モデル名は1文字目を大文字、単語の単数系で作成する。
→一方、テーブル名の方は同じ単語の複数形で作成する命名規則がある。
→実際にデータベースにテーブルが作成されるのは、後述の「rake db:migrate」コマンドを
 実行した時であり、実行したマイグレーションファイルの情報は「schema.rb」に記録される。

18:30~19:30
・モデル
モデルは「ActiveRecord::Base」クラスを継承して作成される。
モデルを作成した場合、テーブルには自動的に作成日時をと更新日時を記録するカラムが作成
される。(created_at、updated_at)NotNull制約付き。

マイグレーション
SQLを使用せずにデータベースの情報を作成、更新する機能。

マイグレーションの実行
rake db:migrate
→db/schema.rbファイルに実行スキーマの情報が記録される。手動での編集は禁止。

・データベースの確認
rails db
SQLiteに接続し、DBコンソールを開くコマンド

.schema
→接続中のスキーマの定義情報を表示するコマンド。

・ID
マイグレーションファイル「schema.rb」には記載されていないが、マイグレーション実行時に
テーブルの主キーとして「ID」カラムが自動的に作成される。

railsコンソールの起動
rails c ("c"は"Console"の略。略せずconsoleと打っても同様。)

・カラム情報の確認
モデル名.column_names
(モデル名は英単語の複数形、かつ1文字目が大文字であることに注意)

・データの登録
 ・SQL情報の作成
  変数 = モデル名.new(カラム名:値、…)
  (例)msg = Message.new(name:"Taro",body:"Hello")
 ・実行
  変数.save
  (例)msg.save

21:30~

・データの確認
モデル名.all
→モデル名は単数形の単語、かつ1文字目は大文字

SQLによる確認
1.rails db でSQLiteに接続
SELECT * FROM テーブル名;
SQLで確認する際、テーブル名はモデル名の複数形であることに注意。

・DBのテーブルを確認する
DBコンソールに接続後「.table」(rails c(railsコンソール)ではないので注意)

・データSELECT方法のいろいろ
1.特定IDのデータを取得(単一データ)
モデル名.find(id)
→SELECT * FROM Table Where ID =id;

2.ID以外のカラムを指定して取得(単一データ)
変数 = モデル名.find_by(カラム名:値)
※変数はなくてもよい。

→1.2.はいずれも1件分の結果のみを返す。検索結果が重複した場合は、IDが小さいほうが
 選択される。

3.whereによるデータ取得(複数データ)
モデル名.where(カラム名:値)
→SELECT * FROM Table Where ID = id;

SQLiteSQL文を発行した場合、結果が0件の場合は何も表示されない。

4.先頭、末尾データの取得(ID順)
・モデル名.first ・・・ 先頭データを取得
・モデル名.last ・・・ 最後尾のデータを取得
→「where」で条件の追加も可能
 (例)モデル名.where(カラム名:値).first

・データの削除
1.選択削除
 1.変数 = モデル名.find_by(カラム名:値)
 →処理対象を検索して変数にいったん格納
 
 2.変数.destroy

2.全削除
 モデル名.destroy_all

・routesの設定
ルーティングの設定を行う「routes.rb」においてresourcesメソッドを使用することで、
リソース操作に必要なURLを自動的に作成することができる。
C#-MVCCRUD的なもの (Create、Read(List(Index)、Update、Delete))

(例)
Rails.application.routes.draw do
 resources :messages →resources テーブル名のシンボル記法
end

※「:messages」の後ろに「, only:[特定アクション(シンボル記法)]」を記載することで、
 特定のリソースファイルのみ作成するようにすることができる。

・URLへルパ
リソースに必要なURLを自動的に作成するもの
→へルパ名:アクション名_テーブル名_path

「_path」を「_url」とすることで、絶対URLの設定も可能。

・フォームの作成
フォーム等のビューを作成する際に「ERB」というファイルを使用する。
ERBはHTML文書にRubyスクリプトを埋め込むためのライブラリで、C#MVCのASPX見たいなもの。

スクリプトコードの埋め込み
1.<%= code %> ・・・codeを実行した結果を文字列として埋め込む
2.<% code %> ・・・codeは実行されるが、結果は埋め込まれない
3.<%# comment %> ・・・コメントの記載

・フォームへルパ
<%= form_for(@モデルオブジェクト ) do |f| %>
<% end %>

特定のモデルオブジェクトを作成、編集するためのフォームを自動生成する。
フォームへルパでモデルオブジェクトとフォームを関連づけることで、フォームの
入力値をモデルオブジェクトに割り当てたり、モデルオブジェクトを介してDBから
データを取得し、表示したりすることが可能となる。

・モデルオブジェクト初期化
モデルオブジェクト.new(引数)

・ページリダイレクト
redirect_to リダイレクト先URL,notice:'メッセージ'