Як можна створити нову модель у Ruby on Rails і налаштувати асоціації між цією моделлю та іншою вже існуючою моделлю?

Щоб створити нову модель у Ruby on Rails, вам слід використовувати генератор Rails. Припустимо, що ви хочете створити модель Post, яка буде мати асоціацію з моделлю User.

  1. Створіть модель Post за допомогою генератора Rails.

    rails generate model Post title:string content:text user:references
    

    Ця команда створить файл міграції для таблиці posts з полями title , content та user_id .

  2. Запустіть міграцію для створення таблиці у базі даних.

    rails db:migrate
    
  3. Додайте асоціацію у моделі Post.

    # app/models/post.rb
    class Post < ApplicationRecord
      belongs_to :user
    end
    
  4. Додайте асоціацію у моделі User.

    # app/models/user.rb
    class User < ApplicationRecord
      has_many :posts
    end
    

Тепер модель Post налаштована на використання асоціації belongs_to :user, що дозволить зв’язати кожен запис Post з користувачем User. В полі user_id таблиці posts буде зберігатися зовнішній ключ, який посилається на запис у таблиці users.

Приклад використання.

# Створення нового поста для користувача з id = 1
user = User.find(1)
post = user.posts.build(title: "Назва посту", content: "Зміст посту")
post.save

Цей приклад створює новий пост для користувача з id = 1, прив’язуючи його до цього користувача за допомогою асоціації.