Я новичок в Эликсире и ищу правильный способ изменить отношения в модели Ecto.
Предположим, у меня есть модель с отношениями:
schema "topic" do
has_many :topic_meta, PhoenixApp.TopicMeta
И запрос с предварительной загрузкой:
topic = from t in query,
left_join: meta in assoc(t, :topic_meta),
preload: [topic_meta: meta]
|> Repo.one
Получить карту %PhoenixApp.Topic{...}
со списком topic_meta
Я хочу изменить значение в одном из topic_meta
полей:
changed_meta = %{List.first(topic.topic_meta) | last_read: "newValue"}
Вопрос:
Как вставить измененное отношение topic_meta
к topic
из моего запроса? Сделать так, чтобы новый запрос на обновление полей выглядел ненужным.
Обновите подробную информацию:
first_meta = List.first(topic.topic_meta) // this is first meta
result = Repo.update!(PhoenixApp.Topic.changeset(first_meta, %{last_read: "newValue"}))
case result do
{:ok, topic_meta} ->
// topic_meta successfully updated, but topic does not contain this model
end