問題
私はfiles
テーブルを持っていますが、1 対 1 の関連付けを作成する他の多くのテーブルusers
がavatar
ありposts
ますphoto
。
可能な解決策
考えられる解決策は、テーブルを作成users_files
しposts_files
て使用することhas_one :through
です。しかし、これは過剰に見えます。
理想的なソリューション
理想的な解決策は、このようなテーブルを定義することです
users
- avatar_id
posts
- photo_id
with:
パラメータが含まれてhas_one
いるため、スキーマは次のようになります
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
そうすれば、belongs_to
onを定義する必要はありませんfiles
。同様のメカニズムはすでにありますか?フェニックスでこれに対処する標準的な方法は何ですか?