ポートフォリオにてログイン機能を実装している。
その中でActiveRecordのコマンドを打つことがあるが、いまいちActiveRecordがわかっていない。
RailsでModelを作成するとはActiveRecord::Baseというクラスを継承していて、このクラスの中にどのようなメソッドがあるのか?
自分用にまとめておく。
#ActiveRecord
ActiveRecordはRuby on Railsで使われているOR Mapper(オブジェクト リレーショナルデーターベース マッパー)
のこと。
モデルとテーブルをつなぎ合わせて、SQL文ではなく短いコードでデーターベースの参照したり、編集したりすることができる。
$ rails generate model User name:string email:string
このコマンドを実行するとmodelが作成される。
class User < ApplicationRecord
end
冒頭で述べたように
Ruby on Railsでmodelを作成するとActiveRecord::Baseを継承している。
このモデルクラスであるUserを例にしてメソッドについてまとめる。
#ActiveRecord::Baseのメソッドを何があるか
User.new( name: "takahasi", email: "takahasi@example.com" )
#Userモデルに新規ユーザーを作成
User.save
#新規ユーザーをDBへ保存
User.create( name: "takahasi", email: "takahasi@example.com" )
#newとsave行う
User.find(1)
#DBからidが1のユーザーを取得する
User.find_by( email: "takahasi@example.com" )
#DBから条件に該当する一番目のユーザーを取得する。
User.where(email: "takahasi@example.com")
#DBから条件に該当するすべてのユーザーを取得する
#find_byは条件に合うデーターを一つだけ、whereはすべてのデーターを取得する。
User.update
#ユーザーを更新する
#使い方
user = User.find_by(name: "takahasi")
user.name = "sato"
user.save
#上をこのように書ける
user = User.find_by(name: "takahasi")
user.update(name: "sato")
User.destroy
#ユーザーの削除
User.limit(6)
#DBからidの若い順に6つ取得する
User.order("created_at DESC")
#作成日時の新しい順にユーザーを並び替えて取得
#3人ユーザーがいたら、3.2.1の順で並び替え
User.order("created_at ASC")
#作成日時の古い順に取得
#3人ユーザーがいたら、1.2.3で並び替え
ORMapper、DBの扱いは必須なので、もっと理解したい。
#参考
https://qiita.com/penguin_note/items/adb0b9bf7c13c1b1d44d