我开始了一个新项目:
我只运行以下命令:
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
这里发生了什么?我找到的所有解决方案都没有对我有用/或者我不理解它们。
答案 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个字符。它会让你的数据库更有效率。它对我有用,也许它可以帮助那些最终到达那里的人。