自定义字段上的 Ecto 一对多关联
Ecto one to many association on custom fields
我目前有一个 "Rank" 模型,其中包含字段(整数)"rank",它是一个整数。另一方面,"Ship" 模型有一个 "usable_by" 字段(整数)。我想要实现的是,当我 return 一个 Rank 时,它们还包含所有 Ship 模型的列表,其中 "usable_by" 字段与 Rank 模型中的 "rank" 字段匹配。我知道这可以通过查询和我猜的手动填充数据来实现,但是 Ecto/Phoenix 中是否有任何内置的东西可以让我更容易地做到这一点?
我想我希望的理想情况是使用 has_many(我真的不关心反向关联)与 :references 或 foregin_key 之类的东西,但我不能'似乎无法正常工作。这是我目前使用的线路:
排名模型
schema "ranks" do
field :name, :string
field :rank, :integer
timestamps
has_many :ships, Playground.Ship #Can I use :foregin_key and :references here?
end
我猜你现在已经找到了答案,但如果其他人无意中发现了这个 post 答案是:
has_many :ships, Playground.Ship, foreign_key: :usable_by
这样您就可以在关联模型上使用自定义字段名称。
您应该在迁移中使用引用(您将在其中实际更新数据库)。这里的 Playground.Ship
就像对某个模型的引用,:created_by
是将在关系关联中使用的名称。
我目前有一个 "Rank" 模型,其中包含字段(整数)"rank",它是一个整数。另一方面,"Ship" 模型有一个 "usable_by" 字段(整数)。我想要实现的是,当我 return 一个 Rank 时,它们还包含所有 Ship 模型的列表,其中 "usable_by" 字段与 Rank 模型中的 "rank" 字段匹配。我知道这可以通过查询和我猜的手动填充数据来实现,但是 Ecto/Phoenix 中是否有任何内置的东西可以让我更容易地做到这一点?
我想我希望的理想情况是使用 has_many(我真的不关心反向关联)与 :references 或 foregin_key 之类的东西,但我不能'似乎无法正常工作。这是我目前使用的线路:
排名模型
schema "ranks" do
field :name, :string
field :rank, :integer
timestamps
has_many :ships, Playground.Ship #Can I use :foregin_key and :references here?
end
我猜你现在已经找到了答案,但如果其他人无意中发现了这个 post 答案是:
has_many :ships, Playground.Ship, foreign_key: :usable_by
这样您就可以在关联模型上使用自定义字段名称。
您应该在迁移中使用引用(您将在其中实际更新数据库)。这里的 Playground.Ship
就像对某个模型的引用,:created_by
是将在关系关联中使用的名称。