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 дозволяє розробникам працювати з базою даних так, ніби вони працюють з об’єктами, спрощуючи роботу з даними і роблячи код більш зрозумілим та підтримуваним.