gpt4 book ai didi

postgis - 在变更集验证之前在哪里以及如何包装参数?

转载 作者:行者123 更新时间:2023-12-02 15:20:56 25 4
gpt4 key购买 nike

previous question之后的下一个困难,我试图传递到由 %Geo.Point 函数包装的变更集坐标,在 Map.put 坐标键保持不可变,但目标问题是坐标如何以及在哪里被包裹?我可以在模式处理内部的某个地方执行此操作,或者在 Controller 中传递变更集或模型中的变更集方法之前可能更好吗?

def create(conn, %{"notify" => %{"coordinates" => %{"latitude" => latitude, "longitude" => longitude}} = notify_params}) do
geo = %Geo.Point{coordinates: {latitude, longitude}}
Map.put(notify_params, :coordinates, geo ) # coordinates are immutable
changeset = Notify.changeset(%Notify{}, notify_params)
#...
end

最佳答案

使用 Map.put(notify_params, :coordinates, geo) 可以,但是您没有绑定(bind)该值。

这会将 notify_params 变量与您的新值重新绑定(bind)。请注意,您应该使用 "coordinates" 而不是 :coordinates,因为参数使用字符串作为键。

notify_params = Map.put(notify_params, "coordinates", geo)

还有另一种(首选) map 更新语法,如果 key 不存在,则会出错。

notify_params = %{notify_params | "coordinates" => geo}

关于postgis - 在变更集验证之前在哪里以及如何包装参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33894420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com