2012-07-03 10 views
13

Właśnie skończyłem pracę nad książką Agile Web Development z Railsami, wydanie czwarte (http://pragprog.com/book/rails4/agile-web-development-with-rails) i potrzebuję pomocy w zrozumieniu sposobu tworzenia relacji rodzic-dziecko między modelami. Zrobiłem trochę Googling i szturchnąłem tutaj na StackOverflow i nauczyłem się ogólnie o dziedziczeniu pojedynczego stołu i dziedziczeniu tabeli klas.Jak zaimplementować dziedziczenie tabeli klas w Railsach?

Mam kilka metadanych dotyczących różnych przedmiotów w zbiorze archiwalnym. Znaczna część metadanych jest taka sama dla wszystkich obiektów, np. Numer dostępu, tytuł, opis, prawa autorskie itp. Oprócz zwykłych metadanych istnieją metadane, które mają zastosowanie tylko do niektórych rodzajów przedmiotów, np. Zdjęcia muszą być przechowywane śledzenie, czy przedmiot jest kolorowy, czy czarno-biały; nagrania dźwiękowe muszą śledzić format (CD, DAT, kasetę itp.) i czas trwania; materiały tekstowe muszą śledzić liczbę stron; itd.

 Class hierarchy 

      Item 
       | 
    +-----------+------------+ 
    |   |   | 
Photo SoundRecording Text 

Ponieważ będę miał wiele tysięcy rekordów, wykluczyłem dziedziczenie pojedynczego stołu jako zbyt nieefektywne. Rozumiem ideę dziedziczenia tabel klas przedstawioną tutaj: http://martinfowler.com/eaaCatalog/classTableInheritance.html, ale jestem zdezorientowany, w jaki sposób mogę to wdrożyć w nowym projekcie Ruby on Rails. Czy implementuję dziedziczenie tabeli klas jako skojarzenie polimorficzne (http://guides.rubyonrails.org/association_basics.html#polymorphic-associations) lub czy jestem na niewłaściwym torze?

Dziękuję.

Odpowiedz