ruby-on-rails - 如何向我的 Rails 模型添加新属性?

标签 ruby-on-rails ruby-on-rails-4 rubygems ruby-on-rails-5

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

所以我去了模型并添加了行 attribute :name

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

这是我的 Controller 的样子:

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

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

最佳答案

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

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

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

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

  2. 运行 rails db:migrate

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

  4. 现在检查

关于ruby-on-rails - 如何向我的 Rails 模型添加新属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52644657/

相关文章:

ruby - 我怎样才能摆脱以下警告 : Problem while setting context on example startundefined local variable or method `selenium_driver'

ruby-on-rails - 如何在 Rack 中间件中使用 cookie?

ruby-on-rails - 使用 Ruby on Rails 和 Capistrano 部署跟踪

ruby-on-rails - 将延迟回形针与 S3 直接上传结合使用

ruby-on-rails - Rails 4 将登录设计为弹出窗口

ruby-on-rails - bundle 安装时烦人的 'Network error while fetching'

ruby - 无法在 OS X "El Capitan"上安装 gems

Javascript 获取当前的 Controller 和 Action on Rails

php - 使用 mysql 的 Rails 应用程序 - 语法错误仅适用于 mysql 而不是 sqlite?

javascript - Rails 应用程序在 activeadmin 中出现非常奇怪的错误