0

我正在运行 Ruby 2.0.0 并且安装正确。刚刚加载了一个 gem 'devise',当我尝试迁移我的数据库更改时,它不起作用:

$ rake db:migrate rake 中止! attr_accessible从 Rails 中提取到 gem 中。请为 params(strong_parameters) 使用新的推荐保护模型或添加protected_attributes到您的 Gemfile 以使用旧的保护模型。

然后,在另一个 Stackoverflow 帖子之后,他们建议安装 Bundler。我成功地做到了,并得到了这个:

$ bundle exec rake db:migrate rake 中止! attr_accessible从 Rails 中提取到 gem 中。请为 params(strong_parameters) 使用新的推荐保护模型或添加protected_attributes到您的 Gemfile 以使用旧的保护模型。

有没有人敢于挑战帮助?

4

2 回答 2

1

看起来您正在尝试使用 Rails 4.0.0beta,这不是(恕我直言)新手的最佳选择。您最好切换回 Rails 3* 并充分利用文档齐全、经过测试的摇滚环境的所有优势。如果您仍然决定坚持使用 Rails 4…… 以前没有严格的规则来处理批量分配。Rails 4 使用Strong Parameters对此进行了标准化,该参数已合并到 Rails 核心中。因此,你要这样做:

# 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。

您将需要:

  • 还原更改并删除旧版本的设计生成的文件。
  • 更新Gemfile

    gem 'devise', '3.0.0.rc'
    
  • 运行bundle install
  • 重新生成设计初始化程序和迁移。
于 2013-07-01T09:40:15.170 回答