2011-02-07 26 views
5

Bir telefonun birçok mesajı var.ActiveRecord Dernekleri: has_many WITHOUT karşılık gelen belongs_to?

bir e-posta adresi fazla ileti.

bir mesaj ya bir telefon, e-posta veya hiçbiri aittir. belongs_to ilişkilendirmesi isteğe bağlıdır.

şu dernekler

bu ilişkiler için yarıyor gözüküyor:

  • Telefon modeli has_many :messages
  • Eposta modeli has_many :messages
  • Mesaj modeli belongs_to :phones, :email

Bu olur ya da sahip DEĞIL "can_belong_to" ilişkisini belirtmek için uygun bir yol var mı?

cevap

4

Bu tam olarak doğru tek yönlü bir ilişkidir. Her ikisini de kullanarak bazı purists tarafından bazen "kıvırcık bağımlılık" denir ve validates_associated kullanırken sorunlara neden olabilir. Eğer bir mesajdan telefon bilgilerini almak istediğinizde sadece has_many :messages yeterli olabilir kullanan diğer taraftan

. Genel olarak rahatlık meselesidir.

+0

evet biz olmadan "belongs_to" Biz hızlı onay için bir görünüm @ message.phone.username ShiftPDA diyemeyiz öğrendim! – jpwynn

1

belongs_to dernekleri ile model, yabancı anahtarları (ör. messages tablosu phone_id ve email_id sütunları) tutar. has_many dernek çok kullanışlı değildir, belongs_to ve FK sütun olmadan Yani

phone.messages 
message.phone 

: has_many ile kombine

belongs_to dernek kolayca ilişkili kayıtları erişmenizi sağlar.

bir mesaj fazla alıcı olabilir bu durumda has_and_belongs_to_many gibi bir çok-çok ilişki isteyebilir gibi görünüyor.

İlgili konular