2011-01-11 6 views
0
までの外部キー関係を設定します。

私は単純なhas_many関係を設定しています。私は、外部キーの関係を設定するときに考慮すべきベストプラクティスがあるかどうか疑問に思っていました。ここでは、has_manyから

このアプリケーションは、アイテムと広告を作成できるように設計されています。リストモデルを使用してアイテムを広告に接続します(リストモデルにはタイムスタンプと注文フィールドがあります)。

私が持っている主な質問は、どのモデルがユーザーモデルに属すべきかということです。私は最も簡単な解決策は、ユーザーがリストに属していることだと考えていました。そうすれば、has_many through関係を使用して、どのユーザーがどんな広告を所持しているかを把握することができます。

しかし、これは、私が可能にしたい仕事の流れに応じていくつかの穴が残ることがありました。たとえば、ユーザーがアイテムを含む広告を作成する前に多数のアイテムを作成する場合はどうなりますか?ユーザーがアイテムを作成する前に広告を作成するとどうなりますか?

上記に基づいて、広告とアイテムをユーザーに属するようにする必要があると私は考えていました。私がそうした場合、リストをユーザーに帰属させる明白な理由はありますか?私はそれをやろうとしていたが、どういうわけかそれはちょうど私に冗長に見えた。

これはレールアプリで遭遇するかなり典型的な状況のようですので、経験を積んだ誰かがここに来て、洞察を分かち合うことができると思っていました。

ありがとうございます!

答えて

0

私はあなたが持っているものを理解しようとしています:

ユーザーListingAdであることにItemに関する参加モデルのいくつかの種類のように見える 広告 項目 リスト

を。

これを行うには間違った方法はありません。私は、これを行うための最も正規化された方法は、ユーザーbelong_toのアイテムを持っていて、そのを通してリストと広告を取得することだと思います。しかし、迷惑なコードを書かなくても、広告を得るために複数の結合を実行する必要があります。

逆の極端なことは、すべてのユーザーがbelong_toを持っていることです。 2つのモデルに余分な列がありますが、よりシンプルな関係もあります。また、スキーマの設計時にユーザーに許可されるワークフローについて心配する必要もありません。

モデルにuser_idフィールドを残して残しても、後でこれらのフィールドをマイグレーションして追加することは非常に難しくありません。

関連する問題