gpt4 book ai didi

elixir - 埃克托 |如何获取应用程序中的所有模式模块

转载 作者:行者123 更新时间:2023-12-04 01:46:16 26 4
gpt4 key购买 nike

我正在尝试创建一个混合任务以自动化一些脚手架,并且我想获取应用程序中具有架构和嵌入架构实现的所有模块名称的列表。最终,我想要一个包含字段定义的所有模式的列表,而不仅仅是模块名称。
我们能得到它吗?如果是,那么 ecto 是否提供这样的 api?

最佳答案

根据 Ecto.Schema的文档,

Any schema module will generate the __schema__ function that can be used for runtime introspection of the schema.



您可以将其与 Erlang 和 Elixir 自己的自省(introspection)工具一起使用,以过滤所有相关模块并巧妙地检索任何已定义模式的详细信息,例如:

{:ok, modules} = :application.get_key(:your_app, :modules)

modules
|> Enum.filter(&({:__schema__, 1} in &1.__info__(:functions)))
|> Enum.each(&(IO.inspect(&1.__schema__(:fields))))

关于elixir - 埃克托 |如何获取应用程序中的所有模式模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55159316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com