jakiegoś zapytania w Kontrolera Phoenix, są tam dwa plany dla mnieCzy powinienem używać Ecto.Repo w kontrolerze lub modelu dla Elixir Phoenix?
Plan 1:
defmodule Demo.UserController do
# ...
def index do
# This is just for example
# The point is Repo in used here
Repo.all(User)
end
end
Plan 2:
defmodule Demo.User do
# ...
def all do
# Put all Repo API and building query logic in Model
Repo.all(__MODULE__)
end
end
wolę plan 2. Ponieważ w większości sytuacje, mogę umieścić całą logikę na temat pobierania danych w Modelu.
Ale znajdę oficjalny podręcznik użytkowania Plan 1 (docs/model) i Phoenix domyślny kod alias Repo
w kontrolerze zamiast Modelu (web/web.ex)
Który z nich jest lepszy? I dlaczego?
Witam, mam kolejne pytanie dotyczące tego problemu. Jeśli umieszczę wywołania Repo w kontrolerze, jak przetestować model? Podobnie jak w przypadku twojego przykładu, czy powinienem użyć opcji Repo do wstawienia niektórych rekordów, a następnie wykonać test (wydaje się to być testowaniem integracyjnym) lub po prostu przetestować wynik 'order_by'? btw, nie mam pojęcia, jak przetestować wynik 'order_by'. –
Programując Phoenix, zalecamy programistom posiadanie dwóch plików testowych w testach/modelach: user_test.exs i user_repo_test.exs. W pierwszej można przetestować zestawy zmian i wszystko, co nie wymaga repozytorium. Zaletą jest to, że możesz uruchomić z "async: true" na górze. Drugi wymaga repozytorium i może być miejscem do testowania złożonych zapytań. Wszystko zależy od rodzaju testu, który chcesz napisać. –