我正在使用Desive的rails 4.0分支,以及ruby 2.0.0p0和rails 4.0.0.beta1.

这是一个问题,我在判断我是否以正确的方式做了它,或者是否有其他我应该做的事情.我相信很多迁移到Rails 4.0的人都面临着同样的问题(在谷歌搜索类似的东西之后).

我已经阅读了以下链接:

现在我使用Deviate创建了一个用户模型,我使用上述GIST创建了以下控制器(并确保将其包含在我的routes文件中).我的额外参数是名字和姓氏.

class Users::RegistrationsController < Devise::RegistrationsController
  def sign_up_params
    params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation)
  end
  def account_update_params
    params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :current_password)
  end
  private :sign_up_params
  private :account_update_params
end

还有什么我应该做的吗?这是从现在开始做事情的最好方式吗(自从删除attr_访问器之后).我的表格似乎运行良好(新的和更新的).GIST说使用"资源参数",但这总是会在我的服务器日志(log)中出现"未经允许的参数"错误.

推荐答案

感谢Desive Rails4分支的最新更新,它实际上不需要插入"资源参数".

我已经创建了一个全新的Rails4应用程序,并遵循了基本的设计安装步骤,我的应用程序运行正常,所以我认为,你做得很好.

但有一个修改后的要点,如果需要,它会为您提供一些关于允许参数的额外细节:

资料来源:https://gist.github.com/bluemont/e304e65e7e15d77d3cb9

# controllers/users/registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController

  before_filter :configure_permitted_parameters

  protected

  # my custom fields are :name, :heard_how
  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) do |u|
      u.permit(:name, :heard_how,
        :email, :password, :password_confirmation)
    end
    devise_parameter_sanitizer.for(:account_update) do |u|
      u.permit(:name,
        :email, :password, :password_confirmation, :current_password)
    end
  end
end

Ruby-on-rails相关问答推荐

Ruby Hash 中 tap / delete 和 except 的区别

has_many 通过大小验证

如何保持 en.yml DRY?

无效的单表继承类型:Rails

验证模型属性大于另一个

Rails 路由到唯一索引

有没有办法在 Rails 3.1 中检测用户代理

Rails:包含多态关联

Rails 将 form_for 对象传递给部分

如何为 Rails SimpleForm Select 框设置默认 Select 值

什么是 Ruby 中的 Python 文档字符串?

如何在 routes.rb 中使用 301 或 302 进行重定向

在 rake 任务期间关闭观察者的简单方法?

如何让空白复选框作为假传递给参数

ActiveRecord 查找现有表索引

确认后如何进行设计重定向

Rails Associations - has_many => :through - 但相同的模型

Heroku - 在浏览器中显示当前提交的哈希

ActiveModel::MissingAttributeError:无法使用 FactoryGirl 写入未知属性ad_id

在 Rails 中显示主机名和数据库名