Создание модели в ruby on rails

Обзор создания модели в Ruby on Rails с примером: как определить тип данных, добавить атрибуты, настроить отношения и использовать скоупы.

Создание модели в Ruby on Rails основывается на использовании команды генератора. Для этого часто используется команда rails generate model , которая принимает имя модели и атрибуты модели в виде аргументов. Вот пример, как можно создать модель с именем Post и атрибутами title и body:

rails generate model Post title:string body:text

Эта команда создаст файл миграции для создания таблицы с именем posts, а также файл модели в app/models для класса Post. Файл миграции будет выглядеть следующим образом:

class CreatePosts < ActiveRecord::Migration[5.2]
  def change
    create_table :posts do |t|
      t.string :title
      t.text :body

      t.timestamps
    end
  end
end

Эта миграция создаст таблицу posts, которая будет содержать столбцы title и body, а также столбцы created_at и updated_at, которые автоматически устанавливаются Rails. Файл модели для Post будет выглядеть следующим образом:

class Post < ApplicationRecord
end

Это простой класс модели, который наследуется от класса ApplicationRecord, который содержит основную функциональность модели. На этом можно закончить создание модели, но часто при работе с моделями необходимо добавить дополнительную функциональность, например валидацию или ассоциации. Для этого можно использовать методы, которые предоставляет Rails, например:

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

В этом примере мы добавили валидацию для столбца title, т.е. он не может быть пустым, и ассоциацию с другой моделью с именем comments. Это позволит нам получать и устанавливать связи между двумя моделями. Таким образом, создание модели в Ruby on Rails очень простое и заключается в использовании команды rails generate model, которая создаст необходимые файлы и методы для работы с моделью. Также можно добавлять дополнительные методы и атрибуты, а также использовать другие функции, предоставляемые Rails, чтобы добавить дополнительный функционал для работы с моделью.

Ответы (0)