如何向 Rails 模型添加新属性?

Qic*_*mbu 2 rubygems ruby-on-rails ruby-on-rails-4 ruby-on-rails-5

我使用以下方法创建了一个模型:rails g model category 现在我想向该模型添加一些属性,例如名称

所以我去了模型并添加了这条线 attribute :name

class Category < ApplicationRecord
  attribute :name
  #has_many :posts
end
Run Code Online (Sandbox Code Playgroud)

这是我的控制器的样子:

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
Run Code Online (Sandbox Code Playgroud)

然后我运行命令:rails db:migrate我想向我的数据库添加一些东西来测试它。

我使用了 rails 控制台并尝试添加一个类别:

控制台输出

我需要做什么才能将名称写入数据库?

Gag*_*pta 6

您在模型中定义的属性是虚拟属性,不会向数据库写入任何内容。

您必须定义迁移以将列/属性添加到数据库。

步骤: 1.attribute :name从 category.rb 中删除

  1. 创建一个 Rails 迁移 rails g migration add_fields_to_categories name:string attribute2:type attribute3:type

  2. rails db:migrate

  3. 重新打开控制台并创建一个具有名称属性的新类别。

  4. 现在检查