ruby-on-rails - 有没有办法重命名强参数键?

标签 ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 strong-parameters

假设我在没有使用强参数的 Controller 中有代码

Model.create name: params[:name], alias_id: params[:foreign_id]

我可以在这里使用强参数吗?

我不能做
Model.create params.require(:name, :foreign_id)

因为foreign_id 不是参数

我不能做
Model.create params.require(:name, :alias_id)

因为 alias_id 不在模型上。

基本上,我想知道在使用强参数时是否可以为参数键设置别名。

最佳答案

通常,如果我想以这种方式映射参数(通常是由于某些外部 API),我会使用 alias_attribute ActiveRecord 中的方法

所以如果我有参数作为 {name: "bob", alias_id: 1234} 来找我理想情况下,我想要 {name: "bob", foreign_id: 1234}
我在 ActiveRecord 中声明以下内容模型

class MyModel < ActiveRecord::Base
  alias_attribute :alias_id, :foreign_id
end

现在我的模型将始终识别 alias_id作为映射到 foreign_id在任何情况下,我都可以推送 params.require(:name, :alias_id)并且我的模型将识别它并根据需要处理它,而无需在我的 Controller 中循环属性。

如果您也想在其他模型上执行此操作,这也更简单。

关于ruby-on-rails - 有没有办法重命名强参数键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15423597/

相关文章:

postgresql - 将 JSON 列类型迁移到 HSTORE 列类型

ruby-on-rails - 如何计算此 postgres JOIN GROUP BY 的行数(在 Rails 范围内)

mysql - Rails 数据库连接池的工作原理

ruby-on-rails - Rails 3,设置i18n语言环境不起作用

ruby-on-rails - 如何部署无法使用 Capistrano 进行版本控制的许可字体?

ruby-on-rails - 我在哪里放置 Act-as-taggable-on 的配置?

ruby-on-rails - rails 4 Controller 的未定义方法 `raw'

ruby-on-rails-3 - Kaminari 和页面路由

ruby-on-rails - rails user_signed_in 的参数数量错误(2 对 1)?和当前用户

mysql - 每个模型的 Rails 4 数据库