はじめに
基本は備忘録
MVCについて役割ごとにまとめる機会があったので整理します。
Model
modelの役割はDB関連の処理
date取得などの処理や、date自体の作成・削除
新しいテーブルを作成
モデル・マイグレーションファイルが作成される
db/migrate/
配下にmigrationファイル
app/models/
配下にモデル
# DBに変更を指示するmygration fileを作成
# カラムが複数個ある場合は,は不要 name:string mal:string
rails generate model Post content:text
# DBに変更を反映 id, created_at, updated_at, は自動生成
rails db:migrate
# データ型
integer 整数
float 少数
string 文字列
text 長い文字列
boolean 真偽値
既存のtableにカラムを追加する
db/migrate
配下
# migrationファイルのみを作成
# 中身を記述
# rails db:migrate
rails g migration ファイル名 # 関連ある名前にする
migrationファイルの内容を記述
def change
# ここに処理
# 既存のテーブルにカラムを追加する
add_column :table名, :column名, :データ型
end
バリデーションを設定
不正なデータがDBに保存されないようにする仕組み
モデルで設定する app/models/
配下
# validates :検証するカラム, {検証内容} カラム別に設定
# 空なら弾く, 文字数制限140字
validates :content, {presence: true, length: {maximum: 140}}
# 重複した登録を防げる
validates :email, {uniqueness: true}
presence: true #=> 値が存在しているかを確認
uniqueness: true #=> 値が重複していないか
length: {minimum:4} length: {maximum:16}
format: {widh: 正規表現} #=>値のフォーマットを指定
inclusion: {in: [draft]} # 値の候補を指定
エラーメッセージを表示
form_tagのtextareaの上に配置。 エラーがない場合は何も表示されない
# saveメソッドでvalidationに失敗すると、error messageが自動で生成される
# @post.errors.full_messagesの中に配列で入る
# view側でeach文を使ってエラー文を表示する
<% @post.errors.full_messages.each do | message | %>
<%= message %>
<% end %>
データを操作
# rails consoleや action内で取得する
post = Post.new(name: '田中', age: 18)
post.save
# 変数 = モデル名.条件
post = Post.first
post1 = Post.all
post2 = Post.all[0].content
post3 = Post.find_by(id: 1)
post4 = Post.find(1)
post.destroy