如何更新分配给模型的所有模型?
How to update all models assigned to model?
TimeStamp 属于 Card,Card has_many TimeStamps,在我的情况下当用户检查 'assing_card' 那么如何通过 card.time_stamps 将所有其他 TimeStamps 分配给用户?我所有的尝试都在 TimeStampController
中的 if assing_card do
之后:
def update(conn, %{"time_stamp_id" => time_stamp_id, "user_id" => user_id, "assing_card" => assing_card} = params) do
time_stamp = Repo.get!(TimeStamp, time_stamp_id) |> Repo.preload [:user, :card]
time_stamp = %{time_stamp | user_id: String.to_integer(user_id)}
if assing_card do
time_stamps = time_stamp.card
|> Repo.preload(:time_stamps)
|> Map.get(:time_stamps)# here I have list with time_stamps ... How to |> Repo.update_all(set: [user_id: String.to_integer(user_id)]) ?
...
而不是预加载 :time_stamps
,更新 TimeStamp
行是否会直接完成您想要做的事情?
Ecto.Model.assoc(time_stamp.card, :time_stamps)
|> Repo.update_all(set: [user_id: String.to_integer(user_id)])
TimeStamp 属于 Card,Card has_many TimeStamps,在我的情况下当用户检查 'assing_card' 那么如何通过 card.time_stamps 将所有其他 TimeStamps 分配给用户?我所有的尝试都在 TimeStampController
中的 if assing_card do
之后:
def update(conn, %{"time_stamp_id" => time_stamp_id, "user_id" => user_id, "assing_card" => assing_card} = params) do
time_stamp = Repo.get!(TimeStamp, time_stamp_id) |> Repo.preload [:user, :card]
time_stamp = %{time_stamp | user_id: String.to_integer(user_id)}
if assing_card do
time_stamps = time_stamp.card
|> Repo.preload(:time_stamps)
|> Map.get(:time_stamps)# here I have list with time_stamps ... How to |> Repo.update_all(set: [user_id: String.to_integer(user_id)]) ?
...
而不是预加载 :time_stamps
,更新 TimeStamp
行是否会直接完成您想要做的事情?
Ecto.Model.assoc(time_stamp.card, :time_stamps)
|> Repo.update_all(set: [user_id: String.to_integer(user_id)])