Rob*_*Rob 29 ruby ruby-on-rails ruby-on-rails-4
我收到的JSON包如下:
{
"point_code" : { "guid" : "f6a0805a-3404-403c-8af3-bfddf9d334f2" }
}
Run Code Online (Sandbox Code Playgroud)
我想告诉大家,两个轨point_code和guid需要,而不仅仅是不允许的.
这段代码似乎有效,但我不认为这是好习惯,因为它返回一个字符串,而不是完整的对象:
params.require(:point_code).require(:guid)
Run Code Online (Sandbox Code Playgroud)
我有什么想法可以做到这一点?
sar*_*unw 24
我有类似的需求,我做的是
def point_code_params
params.require(:point_code).require(:guid) # for check require params
params.require(:point_code).permit(:guid) # for using where hash needed
end
Run Code Online (Sandbox Code Playgroud)
例:
def create
@point_code = PointCode.new(point_code_params)
end
Run Code Online (Sandbox Code Playgroud)
截至2015年(RoR 5.0+),您可以将一组键传递给requirerails中的方法:
params.require([:point_code, :guid])
http://api.rubyonrails.org/classes/ActionController/Parameters.html#method-i-require
Rails 文档(https://api.rubyonrails.org/classes/ActionController/Parameters.html#method-i-require)中提出的解决方案是:
def point_code
params.require(:point_code).permit(:guid).tap do |point_code_params|
point_code_params.require(:guid) # SAFER
end
end
Run Code Online (Sandbox Code Playgroud)
好吧,不漂亮,但应该做的伎俩.假设你有params:foo,:bar和:baf你想要所有的东西.你可以说
def thing_params
[:foo, :bar, :baf].each_with_object(params) do |key, obj|
obj.require(key)
end
end
Run Code Online (Sandbox Code Playgroud)
each_with_object返回obj,初始化为params.使用相同的params obj,你依次需要每个键,最后返回对象.不漂亮,但适合我.
| 归档时间: |
|
| 查看次数: |
26904 次 |
| 最近记录: |