Active Record Rails’te MVC deki M harfidir. Yani model.
Active Record bir ORM’dir. Yani veritabanındaki her bir tablo bir sınıfa karşılık gelmektedir.
Active Record İsim Dönüşümleri
Model / Sınıf | Tablo / Şema |
---|---|
Article | articles |
LineItem | line_items |
Deer | deers |
Mouse | mice |
Person | people |
Primary key ler: Varsayılan “id” kolonu ile tanımlanır. (bigint for PostgreSQL and MySQL, integer for SQLite)
Foreign keys: Varsaayılan olarak table_name_id yani “order_id” gibi tanımlanır.
Active Record Modeli Oluşturma
ApplicationRecord sınıfından kalıtım alır.
class Product < ApplicationRecord
end
Tablo ismini ve Primary key i değiştirme
class Product < ApplicationRecord
self.table_name = "my_products"
end
Tablo ismini değiştirdiğinizde test sınıfında aşağıdaki düzenlemenin yapılması gerekir.
class ProductTest < ActiveSupport::TestCase
set_fixture_class my_products: Product
fixtures :my_products
# ...
end
class Product < ApplicationRecord
self.primary_key = "product_id"
end
CRUD
Yeni Kayıt
user = User.create(name: "David")
user = User.new
user.name = "David"
user.save
user = User.new do |u|
u.name = "David"
u.occupation = "Code Artist"
end
user.save
Okuma
# tümünü okuma
users = User.all
# ilk kaydı okuma
user = User.first
# name e göre ilk kaydı okuma
david = User.find_by(name: 'David')
# name e göre tüm kayıtları zamana göre ters sıra ile okuma
users = User.where(name: 'David').order(created_at: :desc)
Güncelleme
user = User.find_by(name: 'David')
user.name = 'Dave'
user.save
user = User.find_by(name: 'David')
user.update(name: 'Dave')
Tüm kayıtları güncelleme
User.update_all "max_login_attempts = 3, must_change_password = 'true'"
Silme
user = User.find_by(name: 'David')
user.destroy
# isme göre olan tüm kayıtları silme
User.destroy_by(name: 'David')
# tüm kayıtları silme
User.destroy_all
Doğrulama
name i boş geçilemez yapma
class User < ApplicationRecord
validates :name, presence: true
end
Bir yanıt yazın