1

同じ問題があるので、このページを参照してください:OmniAuth RailscastチュートリアルのDangerousAttributeError:createはActiveRecordによって定義されています

ただし、Railsはかなり新しいので、データベースからRailsが話すフィールドを削除する方法についてはよくわかりません。言い換えれば、その投稿のどこにも説明されている段階的な簡潔な方法はありません。

以下の投稿は実際には適切な解決策ですが、彼が書いたときに何を参照していたかは不明です。

これが私が参照している投稿です:

したがって、質問を終了するには、次のコマンドを使用して移行を作成する必要があります。

railsg移行remove_silly_authentication_fields_which_should_not_be_there

これは次のようになります。

class DropSillyControllerAttributes <ActiveRecord :: Migration def change remove_column:authentications、:index remove_column:authentications、:create remove_column:authentications、:destroy end end

そして、通常の方法を使用して実行します。

rake db:migration

または、次のコマンドを実行できるはずです。

rake db:rollback

データベースに加えた変更をロールバックするには、次のようにします。

レール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 に答える