假设我在没有使用强参数的 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/