У меня есть две модели: Song and Vote, где у песен много голосов. Я хочу выбрать все песни и подсчитать количество голосов для каждого.
Действие индекса в SongController, сгенерированное с помощью задачи mix gen, было изменено на это:
def index(conn, _params) do
query = from s in Song, select: %{id: s.id, name: s.name, artist: s.artist}
songs = Repo.all(query)
render(conn, "index.html", songs: songs)
end
В этом случае songs
содержит список списков. Но в оригинальной сгенерированной функции songs = Repo.all(Song)
это список структур Song.
Это означает, что функция song_path работает в разрыве шаблона со следующим сообщением об ошибке: maps cannot be converted to_param. A struct was expected, got: %{artist: "Stephen", id: 3, name: "Crossfire"}
Конечно, что я действительно хочу сделать, так или иначе добавить поле num_votes
в оператор select, а затем каким-то образом создать соответствующее поле в структуре Song?