「Ruby/rails/dbモデル」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→groupby) |
(→2つ条件をつけ検索) |
||
(同じ利用者による、間の11版が非表示) | |||
行5: | 行5: | ||
ApplicationRecordを継承する | 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("email = ?", "test@example.com") | ||
+ | users = User.where("rating > 1000") | ||
users = User.where("email = :email", email: "test@example.com") # こちらの方が可読性が良い | users = User.where("email = :email", email: "test@example.com") # こちらの方が可読性が良い | ||
行14: | 行24: | ||
users = User.where("name = :name", name: "taro") | users = User.where("name = :name", name: "taro") | ||
.where(del_flag: false) | .where(del_flag: false) | ||
+ | |||
+ | ==OR検索== | ||
+ | .where("id = ? OR user_id = ?", id, id) | ||
==順序== | ==順序== | ||
行20: | 行33: | ||
==件数== | ==件数== | ||
users = User.limit(5) | users = User.limit(5) | ||
+ | users = User.take(5) | ||
+ | |||
+ | ==件数(開始件数指定)== | ||
+ | users = Users.limit(5).offset(100) | ||
==group by== | ==group by== | ||
行28: | 行45: | ||
==insert== | ==insert== | ||
− | user = User.new(name: "taro", email: "test@example.com") | + | user = User.new(name: "taro", email: "test@example.com") |
+ | user.save | ||
+ | or | ||
+ | user = User.create(name: "taro", email: "test@example.com") | ||
==保存== | ==保存== | ||
行34: | 行54: | ||
user.name = "taro" | user.name = "taro" | ||
user.save | 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) |
2018年4月9日 (月) 14:19時点における最新版
目次
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)