Ruby on Rails și ActiveRecord: Modele, Validări, Asocieri și Interogări ORM în Ruby

Ecosistem & Instrumente Rails 7.1 / 8.0

Ghid complet pentru ActiveRecord în Ruby on Rails: maparea obiect-relațională (ORM), asocieri has_many și belongs_to, validări declarative și interogări sigure fără SQL injectat.

Sintaxă
class Post < ApplicationRecord; has_many :comments; validates :title, presence: true; end

ActiveRecord este componenta fundamentală din framework-ul Ruby on Rails responsabilă pentru stratul de date (ORM – Object-Relational Mapping). O clasă moștenită din ApplicationRecord este mapată automat la un tabel din baza de date (fără a fi nevoie de mapare XML sau configurare manuală a coloanelor).

Model ActiveRecord cu validări și asocieri relaționale
# Fișier: app/models/articol.rb (mapat automat la tabelul SQL 'articole')
class Articol < ApplicationRecord
  # Asocieri între tabele:
  belongs_to :autor, class_name: "User"
  has_many :comentarii, dependent: :destroy

  # Validări automate de integritate a datelor:
  validates :titlu, presence: true, length: { minimum: 5, maximum: 150 }
  validates :continut, presence: true
  validates :status, inclusion: { in: %w[ciorna publicat arhivat] }

  # Domenii de interogare reutilizabile (Scopes):
  scope :publicate, -> { where(status: "publicat").order(created_at: :desc) }
end

# Utilizare în controllere sau consola Rails:
# 1. Creare și validare sigură:
articol = Articol.new(titlu: "Ghid Ruby on Rails", continut: "Text complet...", status: "publicat")
if articol.save
  puts "Articol salvat cu succes în baza de date cu ID-ul #{articol.id}!"
else
  puts "Erori de validare: #{articol.errors.full_messages.join(', ')}"
end

# 2. Interogare curată prin interfața fluidă ActiveRecord:
articole_recente = Articol.publicate.limit(10)