从表中获取外键的惯用法

时间:2018-01-08 16:46:27

标签: elixir ecto

假设我有一张表"customers"。我想获得该表的外键。

我们可以使用model .__ struct .__ meta`

从模型中获取表名

我们还可以通过加载所有模块从表中获取模型名称,并使模型模式与表名匹配

我们从表中获取外键是否可能?

这样做的最佳方法是什么?

如果它可能在ecto?

感谢。

1 个答案:

答案 0 :(得分:6)

以下是如何在模型中找到每个@computed关联的外键:

belongs_to
schema "comments" do
  belongs_to :post, MyApp.Post
  belongs_to :user, MyApp.User
end

输出:

alias MyApp.Comment

for name <- Comment.__schema__(:associations),
    %Ecto.Association.BelongsTo{owner_key: owner_key} <- [Comment.__schema__(:association, name)] do
  IO.inspect owner_key
end

:post_id :user_id 是当前表中的列名。还有owner_key可用,它是相关表格中的列名。