Как я могу добавить новые атрибуты для моих моделей рельсов? - PullRequest
0 голосов
/ 04 октября 2018

Я создал модель, используя: rails g model category Теперь я хочу добавить некоторые атрибуты к этой модели, такие как имя

, поэтому я пошел к модели и добавил строку attribute :name

class Category < ApplicationRecord
  attribute :name
  #has_many :posts
end

Вот так выглядит мой Контроллер:

class CategoriesController < ApplicationController

  #def permitted_params
   # params.require(:category).permit(:name)
  #end

  def index

  end

  def new
  end

  def create
    #category.create(permitted_params)
  end

  def edit
  end

  def update
  end

  def show
  end

  def destroy
  end
end

Затем я запускаю команду: rails db:migrate, и я хотел добавить кое-что в мою базу данных, чтобы проверить его.

Я использовал консоль rails и попытался добавить категорию:

Console output

Что мне нужно сделать, чтобы записать имя в базу данных?

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

Пока генератор rails уже создает миграцию базы данных для указанных вами атрибутов, вам нужно будет создать новую миграцию для добавления новых атрибутов / столбцов базы данных.Ознакомьтесь с руководством по миграции:

https://edgeguides.rubyonrails.org/active_record_migrations.html

Для создания новой миграции вы можете запустить:

rails g migration add_categories_name

в методе изменения миграции:

add_column :categories, :name, :string

, затем снова выполните rake db:migrate.

Также удалите вызов атрибутов из вашей модели.

0 голосов
/ 04 октября 2018

Атрибут, который вы определяете в своей модели, является виртуальным атрибутом и ничего не будет записывать в базу данных.

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

шаги: 1. удалить attribute :name из category.rb

создать миграцию рельсов rails g migration add_fields_to_categories name:string attribute2:type attribute3:type

run rails db:migrate

снова открыть консоль и создать новую категорию сатрибуты имени.

Теперь проверьте

0 голосов
/ 04 октября 2018

Чтобы добавить атрибут в модель, вы должны использовать эту команду:

rails g migration AddNameToCategory name:string
rails db:migrate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...