Chr*_*son 6 ruby-on-rails ruby-on-rails-3 strong-parameters ruby-on-rails-4
假设我在没有使用强参数的控制器中有代码
Model.create name: params[:name], alias_id: params[:foreign_id]
Run Code Online (Sandbox Code Playgroud)
我可以在这里使用强参数吗?
我不能做
Model.create params.require(:name, :foreign_id)
Run Code Online (Sandbox Code Playgroud)
因为foreign_id不是一个参数
我不能做
Model.create params.require(:name, :alias_id)
Run Code Online (Sandbox Code Playgroud)
因为alias_id不在模型上.
基本上,我想知道在使用强参数时是否可以使用参数键别名.
Tyr*_*son 12
通常如果我想以这种方式映射params(通常是由于一些外部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
Run Code Online (Sandbox Code Playgroud)
现在我的模型将始终识别alias_id为foreign_id在任何上下文中的映射,我可以推送params.require(:name, :alias_id),我的模型将识别它并根据需要处理它,而不会在控制器中循环遍历属性.
如果你想在其他模型上也这样做,这也更简单.
| 归档时间: |
|
| 查看次数: |
4933 次 |
| 最近记录: |