如何在db elixir / ecto

时间:2018-05-09 11:40:29

标签: elixir ecto

我有一个用例,我希望将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类型。

这是正确的,如果不是正确的方法吗?

1 个答案:

答案 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]