私が作成した可能性のある関係の問題に気付きました。
私は写真モデルから始めました。管理者は写真をアップロードでき、それらはサイトに存在します。
その後のイテレーションで、コードベースにアルバムが追加され、写真のコレクションを独自のページに整理できるようになりました。
Album
has_many :photos, inverse_of: :album
Photo
belongs_to :album, inverse_of: :photo
上記で遊んだ後、写真は 1 つのアルバムにのみ属することができることに気付きました。それは大丈夫です。
ここで、新たな問題が発生します。自身のモデルでもあるスタッフのメンバーの写真を追加したいと思います。
Photo モデルには、特定のアップロード サービス (ファイルピッカー) を使用して処理するための特別なロジックもあります。
Staff
field :name, type: String
スタッフが自分の写真を持てるようにするにはどうすればよいですか? 非正規化のために新しいモデル StaffPhoto を作成する必要がありますか? 写真を埋め込むか、スタッフに所属させることを考えていましたが、アルバムとスタッフ メンバーの両方に所属することが理にかなっているのかどうかはわかりません。現在私にとって最も理にかなっている唯一のことは、別のモデルを作成し、アップロード サービス ロジックをモジュールに抽象化し、それを両方に含めることです。しかし、私は間違っている可能性があります。重要な部分は、写真全体が単独で、またはアルバムの一部、または一部のスタッフ メンバー (複数の写真) として存在することです。
これをモデル化する方法について何か提案はありますか?