1

请参阅此页面,因为我有同样的问题:OmniAuth Railscast 教程中的 DangerousAttributeError: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 迁移 remove_silly_authentication_fields_which_should_not_be_there

看起来像这样:

类 DropSillyControllerAttributes < ActiveRecord::Migration def change remove_column :authentications, :index remove_column :authentications, :create remove_column :authentications, :destroy end end

并使用通常的方式运行它:

耙分贝:迁移

或者,您应该能够运行:

耙分贝:回滚

要回滚刚刚对数据库所做的更改,并且:

rails d 脚手架认证

要删除所有文件,然后运行:

rails g 脚手架身份验证 user_id:integer provider:string uid:string

并手动做其他事情

顺便说一句,我自己也做了同样的事情。

4

1 回答 1

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 生成迁移以使其一致

于 2013-02-28T20:17:54.637 回答