facebook twitter hatena line email

Ruby/rails/dbモデル

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

table本体クラス

例:user (app/models/user.rb)

class User < ApplicationRecord
end

ApplicationRecordを継承する

全て

user = User.all

検索一件

user = User.find(1) # idが存在しない時はerrorが発生する(発生させないようにするにはwhere(id: 1)を使う
user = User.find_by(email: "test@example.com")
user = User.find_by_id(1)
user = User.find_by_name("taro")
user = User.find_by_email("test@example.com")
users = User.where("email = ?", "test@example.com").first

検索複数(where)

users = User.where("email = ?", "test@example.com")
users = User.where("rating > 1000")
users = User.where("email = :email", email: "test@example.com") # こちらの方が可読性が良い

2つ条件をつけ検索

users = User.where("name = :name", name: "taro")
                 .where(del_flag: false)

OR検索

.where("id = ? OR user_id = ?", id, id)

順序

users = User.order(:created_at)

件数

users = User.limit(5)
users = User.take(5)

件数(開始件数指定)

users = Users.limit(5).offset(100)

group by

users = User.select("date, sum(date)").group("date")

特定カラムのみ

users = User.select("name, created_at")

insert

user = User.new(name: "taro", email: "test@example.com")
user.save

or

user = User.create(name: "taro", email: "test@example.com")

保存

user = User.find(1)
user.name = "taro"
user.save

削除

user = User.find(1)
user.destroy

dao的記述

class User < ApplicationRecord
  def self.find_by_id(id)
    return where(id: id).first
  end
end

アクセス方法 User.find_by_id(1)