Saya mencoba membuat tugas campuran untuk mengotomatisasi beberapa perancah dan saya ingin mendapatkan daftar semua nama modul dalam aplikasi yang memiliki skema dan implementasi skema tertanam. Akhirnya saya ingin memiliki daftar semua skema dengan definisi bidang, bukan hanya nama modul. Bisakah kita mendapatkannya dan jika ya lalu bagaimana, apakah ecto menyediakan api seperti itu?
ekto | Cara mendapatkan semua modul skema di aplikasi
Jawaban (1)
Menurut dokumentasi Ecto.Schema
,
Modul skema apa pun akan menghasilkan fungsi
__schema__
yang dapat digunakan untuk introspeksi skema saat runtime.
Anda dapat menggunakan ini bersama dengan fasilitas introspeksi Erlang dan Elixir untuk memfilter semua modul yang relevan dan mengambil detail skema yang ditentukan dengan rapi, misalnya:
{:ok, modules} = :application.get_key(:your_app, :modules)
modules
|> Enum.filter(&({:__schema__, 1} in &1.__info__(:functions)))
|> Enum.each(&(IO.inspect(&1.__schema__(:fields))))
person
Vadim Landa
schedule
14.03.2019
Terima kasih, Vadim! Persis apa yang saya butuhkan.
- person AndreyKo; 14.03.2019