请参阅此页面,因为我遇到同样的问题:DangerousAttributeError in OmniAuth Railscast Tutorial: create is defined by ActiveRecord
然而,对于rails来说还是比较新的,我不太确定如何从数据库中删除他们所说的字段。换句话说,在该帖子的任何地方都没有逐步简洁的描述方式。
下面的帖子实际上是一个正确的解决方案,但是当他写下来时,不清楚他所指的是什么:“rails g migration remove_silly_authentication_fields_which_should_not_be_there”不确定“silly_authentication_fields_which_should_not_be_there”到底是什么。
以下是我所指的帖子:
因此,只需完成问题,您就需要创建迁移 使用此命令:
rails g migration remove_silly_authentication_fields_which_should_not_be_there
看起来像这样:
class DropSillyControllerAttributes< ActiveRecord :: Migration def 更改 remove_column:authentications,:index remove_column:authentications,:create remove_column:authentications,:destroy end end
使用通常的方式运行它:
rake db:migration
或者您应该能够运行:
rake db:rollback
回滚刚刚对数据库所做的更改,并且:
rails d scaffold authentication
要删除所有文件,请运行:
rails g scaffold authentication user_id:integer provider:string UID:字符串
手动执行其他操作
顺便说一下,我自己做了同样的事情。
答案 0 :(得分:2)
它告诉您创建迁移以删除有问题的字段,然后运行迁移
使其更清晰:
运行此命令:
rails g migration drop_silly_controller_attributes
该命令将在/ db / migratie /中创建一个带有时间戳和名称的文件,如:
2013121212312312_drop_silly_controller_attributes.rb
打开该文件并将其修改为如下所示:
class DropSillyControllerAttributes < ActiveRecord::Migration
def change
remove_column :authentications, :index
remove_column :authentications, :create
remove_column :authentications, :destroy
end
end
然后你可以运行迁移:
rake db:migrate
令人困惑,因为如果您使用“remove_silly_authentication_fields_which_should_not_be_there”生成迁移该类应该是RemoveSillyAuthenticationFieldsWhichShouldNotBeThere,但随后它会显示“DropSillyControllerAttributes”,因此您应该使用drop_silly_controller_attributes生成迁移以使其保持一致