5

電話にはたくさんのメッセージがあります。

メールアドレスには多くのメッセージがあります。

メッセージは、電話または電子メールに属しているか、どちらにも属していません。関連付けはbelongs_toオプションです。

次の関連付けは、これらの関係に対してうまく機能しているようです。

  • 電話モデルhas_many :messages
  • メールモデルhas_many :messages
  • メッセージ モデルにはありませんbelongs_to :phones, :email

これは大丈夫ですか、または「can_belong_to」関係を指定する適切な方法はありますか?

4

2 に答える 2

4

完全に正しい一方向の関係です。両方を使用することは、一部の純粋主義者によって「循環依存」と呼ばれることがあり、 validates_associatedを使用するときに問題を引き起こす可能性があります。

反対側からはhas_many :messages、1 つのメッセージから電話番号の情報を取得したい場合に、使用するだけでは不十分な場合があります。一般的には都合の問題です。

于 2011-02-07T20:04:04.927 に答える
1

関連付けのあるモデルbelongs_toは、外部キーを保持します (たとえば、messagesテーブルには列phone_idemail_id列があります)。

belongs_toと組み合わせた関連付けによりhas_many、関連付けられたレコードに簡単にアクセスできます。

phone.messages
message.phone

したがって、belongs_toおよび FK 列がないと、has_many関連付けはあまり役に立ちません。

この場合has_and_belongs_to_many、メッセージが多くの受信者を持つことができるなど、多対多の関係が必要になるようです。

于 2016-04-24T20:51:25.707 に答える