Ruby on Rails勉強備忘録5/2~5/5分
ProgateでRuby on Railsを勉強していたので、それの勉強録を兼ねて下記にまとめておきます。
現状使い方しかわからないものが多いので、疑問に思ってることは後日調べる予定です。
コントローラーやモデルの作り方
コントローラー
rails generate controller コントローラー名
generate→gで省略可能。
モデル
rails generate model モデル名 カラム名:型 カラム名2:型
generate→gで省略可能。
以下は自動追加されます
・id → 連番。キー項目になる
・created_at → 作成日
・updated_at → 更新日
html.erbで使用する
・タグ内に変数の値を入れる場合のやり方は、jspでのjava変数値入れる方法と一緒
・link_to("画面上に出す文字列","routes.rbのURL部分",postの場合は {method: "post"})の記述が必要
routes.rbでリンク先に設定したアクションへ飛ばす。
HTMLでいう<a href="">
タグみたいなもの。
・form_tag("routes.rbのURL部分",ファイル送信などマルチパート使うなら、{multipart:true}の追加)
値によるURLの変更など、formタグでできる内容・ajaxなど画面内完結すべきことを設定するときに使うモノっぽい。
コントローラーで使用する
・params[:htmlのsubmitしたformのタグ名]
inputタグなどsubmitした値を受け取りたい際に使用する。
演習ではnameタグで受け取っていたが、idが受け取れるのか、nameが複数の場合はどうなってしまうのかは未検証
・変数は @変数名
・redirect_to("相対パスによるURL")
getで定義されたURLに遷移するときに使用する
・render("route.rbに設定されたアクション")
postで定義されたアクションに遷移するときに使用する
・flash[:notice] = "メッセージ"
メッセージを画面に出力する。一時的なメッセージ用として使用。基本的に1回のみの表示。
noticeは通知メッセージ
alertはアラートメッセージ
・session[:キー項目] = 変数・値
セッションとして登録する値を設定するもの。
使いまわす場合は必要になる。
データベース関連
・モデル名は最初大文字
例:モデル名 USER
→User
※データベースの名前ではなくモデル名を使うっぽい
・find_by(カラム名: とりたい値,カラム名2: とりたい値2)
データベースから合致する値のレコードを取得したい場合に使用する。
普通にキー項目を取得すればいい。
一意じゃない場合どうなるかは未検証
・new
カラム名と値を指定すれば、その値を入れたインスタンスを作る。
からの場合はとりあえず空のインスタンスを作ってくれる。(初期値みたいなもの)
・save
データベースで言うcommitをする。
コミットできない場合はrollbackされ失敗する。
・all
すべての値を受け取る際に使う。
一覧を出す場合に使うか。
.orderを使ってソートを行うことができる。
.order(カラム名: asc OR desc)で設定
モデル中に入れるvalidate項目
書き方
validates :チェックするカラム名, {チェックする内容}
・presence: true → 必須入力
・uniqueness: true → 重複ダメ
DBの追加
rails generate migration クラス名
generate→gで省略可能。
基本的に後で制約・カラムの追加等をするときには作る必要がある。
add_column :DB名, :カラム名, :型
既にあるmigrationファイルに追記すれば適応できるかは未検証。
書くだけだと適応されないため、下記のコマンドで適応する必要がある。
rails db:migrate
DBで設定できる型
参考: https://qiita.com/zaru/items/cde2c46b6126867a1a64
VARCHARにあたる内容・datetime,time,dateの違いは何なのかは追々調べる予定。
指定できる型
- string : 文字列
- text : 長い文字列
- integer : 整数
- float : 浮動小数
- decimal : 精度の高い小数 金額を扱う際は使用することになりそう
- datetime : 日時
- timestamp : タイムスタンプ
- time : 時間
- date : 日付
- binary : バイナリデータ
- boolean : Boolean