#无法转储表“subscriptions”,因为跟随NoMethodError #nurfined方法`[]'为nil:NilClass

时间:2014-05-28 10:23:58

标签: database ruby-on-rails-4 sqlite migration schema

我开始了一个新项目:

我只运行以下命令:

rails g model subscription

然后:

rails g controller subscriptions

然后:

resources :subscriptions添加到我的路线

然后:

rake db:migrate

然后:

rails g migration add_column_to_subscriptions

具有以下内容:

class AddColumnsToSubscriptions < ActiveRecord::Migration

      def change
        add_column :subscriptions, :fname, :text
        add_column :subscriptions, :lname, :text
        add_column :subscriptions, :email, :email
      end
    end

然后:

rake db:migrate

在我添加列迁移之前,我的架构中有一个订阅表。但现在在我的架构中:

# Could not dump table "subscriptions" because of following NoMethodError
#   undefined method `[]' for nil:NilClass

这里发生了什么?我找到的所有解决方案都没有对我有用/或者我不理解它们。

1 个答案:

答案 0 :(得分:1)

不确定此错误是否仍然发生在你​​身上,但是如果它也适用于其他人。问题是你的数据库可能处于一个时髦的状态,列类型错误,在这种情况下我想是“电子邮件”。尝试将其更改为字符串并重新开始。

class AddColumnsToSubscriptions < ActiveRecord::Migration
  def change
    add_column :subscriptions, :fname, :string
    add_column :subscriptions, :lname, :string
    add_column :subscriptions, :email, :string
  end
end

另外,我建议使用字符串作为名字和姓氏,因为它们可能永远不会超过256个字符。它会让你的数据库更有效率。它对我有用,也许它可以帮助那些最终到达那里的人。