2009-08-14 10 views
1

Angenommen, ich schreibe eine Blog-App mit Modellen für Posts, Seiten und Fotos. Ich habe ein Kategoriemodell, das mit jedem dieser Modelle verknüpft werden kann. So kann eine Kategorie verschiedene Arten von Elementen enthalten. Jeder Artikel hat nur EINE Kategorie.Rails Polymorphism 'rückwärts'

Ich könnte dies mit einem generischen Tagging-Muster mit einer Join-Tabelle implementieren, aber ich möchte sicherstellen, dass jedes Thema nur Kategorie haben kann.

Was wäre der beste Weg, dies in Rails zu implementieren?

Antwort

4

Okay, ich glaube, ich habe es:

class Post < ActiveRecord::Base 
    has_one :categorization, :as => :categorizable 
    has_one :category, :through => :categorization 
end 

class Category < ActiveRecord::Base 
    has_many :categorizations, :dependent => :destroy 
end 

class Categorization < ActiveRecord::Base 
    belongs_to :category 
    belongs_to :categorizable, :polymorphic => true 
end 

nun verschiedene Modelle eine Kategorie haben kann, aber jede Instanz kann nur eine Kategorie haben ... Ich denke.

+0

Ausgezeichnet. Ich habe meinen Kopf auf den Schreibtisch geschlagen und versucht, das herauszufinden. Vielen Dank! – Jurgen