0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ActiveRecordのメソッド

Posted at

ポートフォリオにてログイン機能を実装している。
その中でActiveRecordのコマンドを打つことがあるが、いまいちActiveRecordがわかっていない。

RailsでModelを作成するとはActiveRecord::Baseというクラスを継承していて、このクラスの中にどのようなメソッドがあるのか?

自分用にまとめておく。

#ActiveRecord

ActiveRecordはRuby on Railsで使われているOR Mapper(オブジェクト リレーショナルデーターベース マッパー)
のこと。

モデルとテーブルをつなぎ合わせて、SQL文ではなく短いコードでデーターベースの参照したり、編集したりすることができる。

$ rails generate model User name:string email:string

このコマンドを実行するとmodelが作成される。

app/models/user.rb
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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?