Frage

Ich habe die folgenden zwei Modelle

class ContactField < ActiveRecord::Base
end

class Address < ContactField
end

class Phone < ContactField
end

und

class Contact < ActiveRecord::Base
end

class Company < Contact
end

class Person < Contact
end

Ich möchte ein Kontakt, egal ist es Unternehmen oder Person, viele ContactFields zu haben (Adressen und Telefone) ... Also, wo soll ich jene setzen viele hat und gehört ? Dank

War es hilfreich?

Lösung

Sie schon gesagt, es in einfachem Englisch :-)

  

Ich möchte ein Kontakt, egal ist es Unternehmen oder Person, zu viele ContactFields haben (Adressen und Telefone) ... Also, wo soll ich jene setzen hat viele und gehört? Dank

class Contact < ActiveRecord::Base
 has_many :contact_fields
end

class ContactField < ActiveRecord::Base
 belongs_to :contact
end

Diese Beziehung wird sowohl von Adresse und Telefon

vererbt werden

Andere Tipps

Sieht aus wie Sie beschreiben eine gehört zur Beziehung. Die Verbände sollten in der übergeordneten Klasse definiert werden, so dass sie von den Unterklassen vererbt werden.

class ContactField < ActiveRecord::Base
  belongs_to :contact
  belongs_to :company, :foreign_key => :contact_id
  belongs_to :person, :foreign_key => :contact_id
end

class Contact < ActiveRecord::Base
  has_many :contact_fields
  has_many :addresses
  has_many :phones
end

Allerdings @ contact.contact_fields wird nur ContactField Datensätze zurück. Wenn Sie die Methoden der Definition in einem der Teilklassen benötigen, können Sie immer die Methode wird. Es gibt ein paar Möglichkeiten, um die. Eine solche Zugabe die zusätzlichen Verbände, wie ich es tat. Oder mit Activerecord :: Base # wird

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top