Создание модели в 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, чтобы добавить дополнительный функционал для работы с моделью.