我有一个用例,我希望将module_name
存储在我的数据库(Postgres)中。我这样做,以便稍后我可以检索name
并调用function
内定义的module
。
e.g。
defmodule A do
def a() do
end
end
假设我有一个架构" xyz" 我想在其中保留一个字段模块名称,
schema "xyz" do
field(:module, Ecto.Atom)
end
目前,我已将该字段保持为Ecto.Atom
类型。
这是正确的,如果不是正确的方法吗?
答案 0 :(得分:1)
您可以使用apply/3
来调用名称为atom的模块上的函数。
假设您Enum
存储xyz
个原子,身份123
。您可以像这样致电Enum.map([1, 2, 3], &(&1 * &1))
:
xyz = Repo.get(Xyz, 123)
apply(xyz.module, :map, [[1, 2, 3], &(&1 * &1)]) #=> [1, 4, 9]