Про ORM (Object-Relational Mapping)

ORM, або Object-Relational Mapping, є підходом до взаємодії з базами даних в об’єктно-орієнтованих мовах програмування, таких як Ruby. Основна ідея ORM полягає в тому, щоб забезпечити зручний спосіб роботи з базою даних, використовуючи об’єктно-орієнтовані концепції.

У Ruby існують різні бібліотеки для реалізації ORM, але одна з найпопулярніших - ActiveRecord, яка входить в стандартний склад фреймворку Ruby on Rails.

Основні поняття ORM в контексті ActiveRecord:

Модель (Model) - це клас Ruby, який відповідає таблиці в базі даних. Кожен екземпляр цього класу представляє конкретний рядок в таблиці. Модель визначає взаємозв’язки та правила взаємодії з базою даних.Приклад моделі:

class User < ActiveRecord::Base
  # Конфігурація моделі
  has_many :posts
  validates :name, presence: true
end

Таблиця (Table)* - це сутність бази даних, яка зберігає дані. В ActiveRecord таблиці створюються автоматично на основі моделі.

Міграції (Migrations). ActiveRecord дозволяє використовувати міграції для визначення структури бази даних. Вони забезпечують зручний спосіб зміни схеми бази даних через код.Приклад міграції:

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :name
      t.integer :age

      t.timestamps
    end
  end
end

Асоціації (Associations): ActiveRecord надає зручний спосіб визначити взаємозв’язки між моделями. Наприклад, один до багатьох (has_many, belongs_to), багато до багатьох (has_and_belongs_to_many), тощо. Нижче приклад асоціації:

class User < ActiveRecord::Base
  has_many :posts
end

class Post < ActiveRecord::Base
  belongs_to :user
end

CRUD операції (Create, Read, Update, Delete). ActiveRecord надає зручний інтерфейс для виконання базових операцій з базою даних без прямої роботи з SQL-запитами. Приклад створення запису:

user = User.new(name: 'John Doe', age: 25)
user.save

Приклад отримання запису:

user = User.find(1)

ORM в Ruby дозволяє розробникам працювати з базою даних так, ніби вони працюють з об’єктами, спрощуючи роботу з даними і роблячи код більш зрозумілим та підтримуваним.