我的控制器中有一个方法可以找到以json方式传入的模型的关系。当存在所有预期属性时,它工作正常。但如果我排除一个'project',我的项目方法会给我第一个记录而不是nil或Project.none。
ActiveModelSerializers :: Deserialization.jsonapi_parse(relationship_params ['project']计算结果为{}。调用项目返回相当于Project.first
def project
Project.find_by(ActiveModelSerializers::Deserialization.jsonapi_parse(relationship_params['project'], only: [:id]))
end
def relationship_params
return false unless params.dig(:data, :relationships)
params.require(:data).require(:relationships).transform_keys(&:dasherize)
end
答案 0 :(得分:2)
您可以验证您的params哈希值。但这是正常的,Model.find_by({})或Model.find_by(nil)返回第一个记录;
def project
find_params =ActiveModelSerializers::Deserialization.jsonapi_parse(relationship_params['project'], only: [:id])
if find_params.present?
Project.find_by(find_params)
else
nil
end
end