What is the best way to convert all controller params from camelCase to snake_case in Rails?

后端 未结 14 885
灰色年华
灰色年华 2020-12-23 00:02

As you already know, JSON naming convention advocates the use of camelSpace and the Rails advocates the use of snake_case for parameter names.

What is the best way t

14条回答
  •  遥遥无期
    2020-12-23 00:12

    ActiveSupport already provides a String#snakecase method. All you have to do is install a filter that does a deep iteration through the params hash and replaces the keys with key.snakecase.

    before_filter :deep_snake_case_params!
    
    def deep_snake_case_params!(val = params)
      case val
      when Array
        val.map {|v| deep_snake_case_params! v }
      when Hash
        val.keys.each do |k, v = val[k]|
          val.delete k
          val[k.snakecase] = deep_snake_case_params!(v)
        end
        val
      else
        val
      end
    end
    

提交回复
热议问题