允许数组和字符串使用相同的参数

时间:2017-04-06 01:36:58

标签: ruby-on-rails ruby

我的用户输入有一个location键,其值可以是一个数组:

params # => {"location"=>["California", "New York"], "email"=>"test@test.com", "name"=>"Test"}

或字符串:

params # => {"location"=>"California", "email"=>"test@test.com", "name"=>"Test"}

我想知道允许数组或字符串的最佳方法是什么。

我能看到的最简洁的方法是将:locationlocation: []添加为允许的参数,但我不确定这是否是实现此目的的正确方法。

def params
  params.permit(
    :name,
    :email,
    :location,
    location: []
  )
end

有什么建议吗?这是正确的方法吗?

1 个答案:

答案 0 :(得分:0)

请注意,permit用于whitelist parameters for Active Model mass assignment。所以你的解决方案可能没问题。另一种方法是强制location进入一个数组(如果它已经是一个数组,它将保持不变):

def permitted_params
  params["location"] = Array(params["location"])
  params.permit(
    :name,
    :email,
    location: []
  )
end