ruby-on-rails - 如何从参数中删除字段[:something]

标签 ruby-on-rails

我的注册表单是用户模型的表单,采用公司的字符串值。但是,我刚刚进行了更改,使用户属于公司。因此,我需要将 Company 对象传递给 Users 模型。

我想使用表单中的字符串值来获取 Company 对象:

@user.company = Company.find_by_name(params[:company])

我相信上述方法有效,但是当我调用时,表单将 :company (字符串)传递到模型中:

@user = User.new(params[:user])

因此,我想知道(但无法找到如何)在将 :company 参数传递给用户模型之前删除它。

最佳答案

Rails 4/5 - 编辑后的答案 (见评论)

自从写了这个问题以来,Rails 的新版本添加了 extract!except例如:

new_params = params.except[the one I wish to remove]

这是一种更安全的方法,可以将您需要的所有参数“抓取”到副本中,而不会破坏原始传入的参数(这不是一件好事,因为随着时间的推移,它将使代码的调试和维护变得非常困难)。

或者你可以直接传递而不复制,例如:

@person.update(params[:person].except(:admin))

extract!(具有 ! bang 运算符)将修改原始内容,因此使用时要更加小心!

原始答案

您可以使用 Hash#delete 从哈希中删除键/值对:

params.delete :company

如果它包含在 params[:user] 中,那么您将使用它:

params[:user].delete :company

关于ruby-on-rails - 如何从参数中删除字段[:something],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5150676/

相关文章:

JavaScript 挑战——Rails 按钮迭代

ruby-on-rails - 无方法错误 : undefined method `mock' with Mocha and Rails 3

ruby-on-rails - Rails 服务器 bin/rails :6: warning: already initialized constant APP_PATH error

ruby-on-rails - 将图像裁剪为矢量形状或叠加形状

css - Michael Hartl Rails 教程 - CSS 未正确渲染

ruby-on-rails - 载波图像上传到s3 "hostname does not match certificate error"

ruby-on-rails - ruby 2.0 rails gem 安装错误 "cannot load such file -- openssl"

ruby-on-rails - 自定义 Rails 未捕获的异常日志记录

html - Rails 表格中的每个嵌套属性

ruby-on-rails - 如何在 webpacker 中使用 handlebars