【问题标题】:Rails 4.0 & Devise - Strong Parameters errorRails 4.0 & Devise - 强参数错误
【发布时间】:2013-06-26 09:09:39
【问题描述】:

这里是新手,所以请耐心等待。

带有 ruby​​ 2.0 的 Rails 4 上的新应用程序,我安装了 Devise 并按照说明操作(默认 root 等)。 github上的设计自述文件说它应该与rails4兼容,但是

  • db:migrate 失败,除非我在 User.rb 中注释掉 attr_accessible 行
  • 注释掉之后,我在尝试创建用户时收到“ActiveModel::ForbiddenAttributesError in Devise::RegistrationsController#create”错误。

我看到一些类似这样的堆栈溢出问题,但很多答案直接跳入了一些复杂的话题。我知道我需要为批量分配指定允许的属性,但是如何?在哪里?哪些属性需要被允许,所有这些?只有我希望同时更改/创建的那些?

根据错误判断,我会创建一个从 Devise::registrationsController 继承的 registrations_controller.rb 吗?我在其中指定了什么?

非常感谢任何一步一步的新手友好答案。我已经筋疲力尽地尝试从这里的答案和谷歌搜索的各种网站中尝试不同的代码。

【问题讨论】:

  • 不注释掉attr_accessible会出现什么错误
  • rake db:migrate rake 中止! attr_accessible 从 Rails 中提取到 gem 中。请为 params(strong_parameters) 使用新的推荐保护模型或将 protected_attributes 添加到您的 Gemfile 以使用旧的。

标签: devise ruby-on-rails-4 strong-parameters


【解决方案1】:

欢迎使用 stackoverflow!

问题是 attr_accessible 的功能在 rails 4.0 中发生了变化

让它运行的两种可能性

1 更新设计它可以处理 Rails 4.0

将此行添加到应用程序的 Gemfile:

gem 'devise', '3.0.0.rc' 

然后执行:

$ bundle

2 将 attr_accessible 的旧功能再次添加到 rails 4.0

尝试使用 attr_accessible 并且不要将其注释掉。

将此行添加到应用程序的 Gemfile:

gem 'protected_attributes'

然后执行:

$ bundle

【讨论】:

  • 谢谢你,我会尝试特定的设计版本,但我认为设计的主分支已经更新为兼容 Rails 4.0?
  • 刚刚尝试 3.0.0.rc 并得到相同的错误,要求使用新的“强参数”。我想学习这个,因为它看起来像是新的 rails 功能。
  • 如果你想学习如何处理设计下的“强参数”部分是有帮助的github.com/plataformatec/devise
【解决方案2】:

添加下面的 gem 并进行捆绑安装对我有用

source 'https://rubygems.org'

gem 'rails', '4.0.2'
gem 'bootstrap-sass', '2.3.2.0'
gem 'devise', '3.0.0.rc' 
gem 'protected_attributes'
gem 'sqlite3'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-29
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 2013-07-30
    • 1970-01-01
    相关资源
    最近更新 更多