ben

OMÜ , Bilgisayar Mühendisliği, 13'

23 Ağustos 2015 Pazar

Active Record-2

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’)
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'")

SELECT * FROM users  WHERE (tur='admin')

where+And/Or

User.where("tur = ? AND adres = ?", 'admin', 'samsun')
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
SELECT DISTINCT name FROM users

Limit/offset

Limit: ilk kayıtlar
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")
SELECT * FROM ucrets   ORDER BY created_at  ASC

Order asc/desc

Asc: artan sıralama
Decs: azalan sıralama

User.order(created_at: :desc)
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

User.active
SELECT * FROM users WHERE  state = 'active‘

User.inactive
 SELECT * FROM users WHERE  state = 'inactive'