Kaydın Sorgulanması
All
Tüm kayıtları getirir
client = User.all
SELECT * FROM users
Find
Primary key üzerinden aranan değeri getirir
client = Client.find(10)
SELECT * FROM clients WHERE (clients.id = 10) LIMIT 1
find_by
User.find_by_name( ‘ayşe’)
User.find_by_name: ‘ayşe’
User.find_by(name: ‘ayşe’)
User.find_by_name: ‘ayşe’
User.find_by(name: ‘ayşe’)
SELECT * FROM users WHERE name = ‘ayşe' LIMIT 1
take
Sıralama ölçütü olmadan İlk Kayıtları getirir
client = Client.take
SELECT * FROM clients LIMIT 1
client = Client.take(2)
SELECT * FROM clients LIMIT 2
first
Sıralı olarak ilk kaydı getirir
client = Client.first
SELECT * FROM clients ORDER BY clients.id ASC LIMIT 1
client = Client.first(3)
SELECT * FROM clients ORDER BY clients.id ASC LIMIT 3
last
Son kaydı getirir
client = Client.last
SELECT * FROM clients ORDER BY clients.id DESC LIMIT 1
client = Client.last(3)
SELECT * FROM clients ORDER BY clients.id DESC LIMIT 3
where
User.where('tur=?','admin')
User.where("orders_count = 'admin'")
User.where("orders_count = 'admin'")
SELECT * FROM users WHERE (tur='admin')
where+And/Or
SELECT `users`.* FROM `users` WHERE (tur = 'admin' AND adres = 'samsun')
select
User.where('tur=?','admin').select(:email)
SELECT email FROM users WHERE (tur='admin')
User.where('tur=?','admin').select(:email,:name)
SELECT email,name FROM users WHERE (tur='admin')
User.select(:email,:name)
SELECT email,name FROM users
pluck
Tek bir sütunun içeriğini göstermek için kullanılır
User.pluck(:name)
SELECT name FROM users
Distinct/uniq
Belirtilen alandaki farklı kayıtları getirir
User.select(:name).distinct
SELECT DISTINCT name FROM users
User.uniq.select(:name)
User.select(:name).uniq
User.select(:name).uniq
SELECT DISTINCT name FROM users
Limit/offset
Limit: ilk kayıtlar
Offset: başlangıç değeri
Offset: başlangıç değeri
İlk 13 kayıttan sonraki ilk 5 kayıt
User.offset(13).limit(5)
SELECT * FROM users LIMIT 5 OFFSET 13
Order
Aksi belirtilmedikçe artan sıralama
User.order(:created_at)
Veya
User.order("created_at")
Veya
User.order("created_at")
SELECT * FROM ucrets ORDER BY created_at ASC
Order asc/desc
Asc: artan sıralama
Decs: azalan sıralama
Decs: azalan sıralama
User.order(created_at: :desc)
User.order(created_at: :asc)
User.order(created_at: :asc)
SELECT * FROM ucrets ORDER BY created_at DESC
Client.order(orders_count: :asc, created_at: :desc)
SELECT * FROM clients ORDER BY orders_count ASC, created_at DESC
group
Gruplandırma işlemi
User.group(:tur).count
SELECT COUNT(*) AS count_all, tur AS tur FROM users GROUP BY tur
Exists?
Tabloda kayıt varmı? True/false
User.exists?
SELECT 1 AS one FROM `users` LIMIT 1
Exists? + where
User.where(nameSurname: 'esra').exists?
SELECT 1 AS one FROM users WHERE `nameSurname = 'esra' LIMIT 1
scope
class User < ActiveRecord::Base
scope :active, -> { where state: 'active' }
scope :inactive, -> { where state: 'inactive' }
end
scope :active, -> { where state: 'active' }
scope :inactive, -> { where state: 'inactive' }
end
User.active
SELECT * FROM users WHERE state = 'active‘
SELECT * FROM users WHERE state = 'active‘
User.inactive
SELECT * FROM users WHERE state = 'inactive'
SELECT * FROM users WHERE state = 'inactive'