0

Ruby 2.0.0 を実行していますが、正しくインストールしました。gem 'devise' をロードしたところ、データベースの変更を移行しようとしたところ、うまくいきませんでした:

$ rake db:migrate rake が中止されました! attr_accessibleRails から gem に抽出されます。params(strong_parameters) に新しい推奨保護モデルを使用するかprotected_attributes、Gemfile に追加して古いものを使用してください。

その後、別の Stackoverflow の投稿に続いて、彼らは Bundler のインストールを推奨しました。私はそれを成功させ、これを得ました:

$ bundle exec rake db:migrate rake が中止されました! attr_accessibleRails から gem に抽出されます。params(strong_parameters) に新しい推奨保護モデルを使用するかprotected_attributes、Gemfile に追加して古いものを使用してください。

挑戦して助けてくれる人はいますか?

4

2 に答える 2

1

Rails 4.0.0beta を使用しようとしているようですが、これは (IMHO) 初心者にとって最良の選択ではありません。Rails 3* に切り替えて、十分に文書化され、テスト済みのロックンローリング環境のすべての利点を活用することをお勧めします。それでも Rails 4 を使い続けることにした場合… 以前は、一括代入を処理するための厳密なルールはありませんでした。Rails 4 では、RailsコアにマージされたStrong Parametersでこれを標準化しています。したがって、次のようにします。

# controllers/my_controller.rb
def create
    @app = MyApp.new(my_params)
  if @app.save
    redirect_to app_path(@app)
  else
    render :new, alert: 'There was a problem'
  end
end

private

def my_params
  params.require(:app).permit(:title, :password)
end

割り当てロジックは、特定の値がパラメーターとして機能することを許可するために、プライベート メソッドにカプセル化されています。

于 2013-07-01T04:23:04.783 に答える
0

Rails 4 をサポートする Devise 3.0.0.rc を使用してください。

次のことを行う必要があります。

  • 変更を元に戻し、古いバージョンの Devise によって生成されたファイルを削除します。
  • 更新Gemfile

    gem 'devise', '3.0.0.rc'
    
  • 実行しますbundle install
  • Devise イニシャライザとマイグレーションを再生成します。
于 2013-07-01T09:40:15.170 に答える