Rails ActiveModelSerialzer 包含 transform_key
Rails ActiveModelSerialzer include with transform_key
我有 ZoneSerializer
class Api::V1::ZoneSerializer < ActiveModel::Serializer
attributes :id, :name, :address, :description, :groupname, :key, :speed_limit
has_many :radius_user_groups
end
然后我设置了transform_key
ActiveModel::Serializer.config.key_transform = :camel_lower
当我从服务器收到响应时,我得到 radiusUserGroups
,这没问题。但是前端也发送 radiusUserGroups
用于包含,但后端似乎没有自动转换功能。我应该手动执行此操作吗?
添加到您的应用程序控制器 此方法将所有参数转换为snake_case :
before_action :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.underscore] = deep_snake_case_params!(v)
end
val
else
val
end
end
我有 ZoneSerializer
class Api::V1::ZoneSerializer < ActiveModel::Serializer
attributes :id, :name, :address, :description, :groupname, :key, :speed_limit
has_many :radius_user_groups
end
然后我设置了transform_key
ActiveModel::Serializer.config.key_transform = :camel_lower
当我从服务器收到响应时,我得到 radiusUserGroups
,这没问题。但是前端也发送 radiusUserGroups
用于包含,但后端似乎没有自动转换功能。我应该手动执行此操作吗?
添加到您的应用程序控制器 此方法将所有参数转换为snake_case :
before_action :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.underscore] = deep_snake_case_params!(v)
end
val
else
val
end
end