, iki planları oradayız benim içinElixir Phoenix için Denetleyici'de veya Modelde Ecto.Repo kullanmalı mıyım? <a href="http://www.phoenixframework.org/" rel="noreferrer">Phoenix</a> Denetleyicisiyken bazı sorgu için
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: Ben Çünkü çoğunda Planı 2. tercih
defmodule Demo.User do
# ...
def all do
# Put all Repo API and building query logic in Model
Repo.all(__MODULE__)
end
end
Durumlarda, Modele veri getirme ile ilgili tüm mantığı koyabiliyorum.
Ama bir daha iyidir (web/web.ex)
Kontrolör yerine Modeli resmi kılavuz kullanım Planı 1 (docs/model) ve Phoenix varsayılan kodu alias Repo
bulmak? Ve neden?
Merhaba, Bu sorun hakkında başka bir sorum var. Repo çağrılarını denetleyiciye koyarsam, modeli nasıl test edebilirim? Örneğiniz gibi, bazı kayıtları eklemek için Repo'yu kullanmalıyım, sonra testi yapın (bir entegrasyon testi gibi görünüyor) veya sadece 'order_by' sonucunu test edin? btw, 'order_by' sonucunu nasıl test edeceğimi bilmiyorum. –
Phoenix Programlama'da geliştiricilerin test/modellerde iki test dosyasına sahip olmalarını öneririz: user_test.exs ve user_repo_test.exs. İlki, değişiklikleri ve depo gerektirmeyen her şeyi test edebilirsiniz. Avantajı, üstte "async: true" ile çalışabilmenizdir. Diğeri depo gerektirir ve karmaşık sorguları test etmek için bir yer olabilir. Her şey ne tür bir test yapmak istediğinize bağlıdır. –