ruby-on-rails - Rails 4 数据库迁移错误 : undefined method `to_sym' for nil:NilClass

标签 ruby-on-rails database ruby-on-rails-4 database-migration rails-migrations

我对 Rails 比较陌生,正在编写应用程序。到目前为止,该应用程序本身运行良好。最近我想迁移这样的东西:(更新)

class ChangeStuffFromTools < ActiveRecord::Migration
  def change
    change_column :tools, :shares, :integer, :default => 0
    change_column :tools, :views, :integer, :default => 0
    change_column :tools, :likes, :integer, :default => 0
    change_column :tools, :favorites, :integer, :default => 0
    change_column :tools, :featured, :boolean, :default => false
  end
end

我收到这个错误:

$ rails g migration remove_stuff_from_tools
      invoke  active_record
      create    db/migrate/20160904090608_remove_stuff_from_tools.rb

Jonas@JONAS_PC ~/gitapps/ocubit (master)
$ rake db:migrate
== 20160904090608 RemoveStuffFromTools: migrating =============================
-- remove_column(:tools, :featured, :boolean)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

undefined method `to_sym' for nil:NilClass
c:/Users/Jonas/gitapps/ocubit/db/migrate/20160904090608_remove_stuff_from_tools.rb:3:in
change'
      c:inmigrate' NoMethodError: undefined method to_sym' for nil:NilClass
      c:/Users/Jonas/gitapps/ocubit/db/migrate/20160904090608_remove_stuff_from_tools.rb:3:in
  change' c:in `migrate' Tasks: TOP => db:migrate (See full trace by running task with --trace)

我怎么可能修复它,我的意思是我需要以某种方式访问​​我的数据库来编辑它:)

最佳答案

remove_column 的语法是:

remove_column table_name, feild name

所以尝试:

class RemoveStuffFromTools < ActiveRecord::Migration
  def change
    remove_column :tools, :featured
    remove_column :tools, :shares
    remove_column :tools, :views
    remove_column :tools, :likes
    remove_column :tools, :favorites
  end
end

更新:

对于 sqlite remove_column 不支持,对于简单的开发数据库你可以:

  1. 更新您的原始 create_table_migration 并删除不需要的列。

  2. 重新创建您的数据库:rake db:drop 然后是 rake db:create 最后是 rake db:migrate

关于ruby-on-rails - Rails 4 数据库迁移错误 : undefined method `to_sym' for nil:NilClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39315439/

相关文章:

ruby-on-rails - 多个 belongs_to 连接到同一个表(在 Rails 4.2 中,以干净的方式执行此操作的能力是否发生了变化?)

ruby-on-rails - define_method 如何使用在其外部初始化的变量

ruby-on-rails - 为什么 rspec 找不到我不需要参数的路线?

php - 如何使用一对多、双向 Doctrine ?

mysql - 从 MySQL 中的日期时间计算月份数

mysql - 如何保证 Rails 中的 MySQL 锁获取顺序

ruby-on-rails - wicked_pdf 在 unicode pdf 转换 (ruby) 上显示未知字符

javascript - 使用基础遵守来验证文本字段的长度?

database - 数据库之间的数据传输测量

ruby-on-rails - 如何卸载/删除旧的 ruby​​ 版本并保持更新。我安装了两个版本的 ruby