【发布时间】:2015-09-19 15:49:50
【问题描述】:
问题
我有一个files 表,还有许多其他表可以创建一对一关联,例如users 可能有 avatar 和 posts 可能有 photo。
一个可能的解决方案
一个可能的解决方案是创建users_files 和posts_files 表并使用has_one :through。但是,这看起来有些过分了。
理想的解决方案
理想的解决方案是定义这样的表
users
- avatar_id
posts
- photo_id
并且在has_one 中有with: 参数,所以架构看起来像这样
schema "users" do
has_one :avatar, MyApp.FileDb, with: :avatar_id, foreign_key: :id #id is default
end
schema "posts" do
has_one :photo, MyApp.FileDb, with: :photo_id, foreign_key: :id
end
这样您就不需要在files 上定义belongs_to。是否已经有类似的机制? Phoenix 中处理此问题的标准方法是什么?
【问题讨论】:
标签: elixir phoenix-framework ecto