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