2009-11-12 4 views
3

J'ai un problème avec STI et relation dans ActiveRecord. Je pense que j'ai manqué quelque chose dans les méthodes de classe, mais je ne sais pas avec certitude. Ci-dessous est mes modèles:Problème avec la relation un-à-plusieurs avec l'héritage de table unique (Rails)

class User < ActiveRecord::Base 
    has_many :advertisements 
end 

class Advertisement < ActiveRecord::Base 
    belongs_to :user 
end 

class FreeAdvertisement < Advertisement 
end 

class PaidAdvertisement < Advertisement 
end 

Maintenant, je veux trouver tous FreeAdvertisement sous certains utilisateurs, par exemple:

u = User.find_by_username('myself') 
@freebies = u.free_advertisements.all 

Il donne l'erreur:

undefined method `free_advertisements' for #<User:0x2360f18> 

je peux le pirater en utilisant u.advertisements.find :all, :conditions , mais ce n'est pas ce que je veux faire. S'il vous plaît aidez-moi à résoudre ce problème. Merci d'avance.

Répondre

4

Je pense que ce que vous voulez est:

class User < ActiveRecord::Base 
    has_many :free_advertisements 
    has_many :paid_advertisements 
end 
+0

Il fonctionne. Il semble que je doive ajouter tous les sous-objets dans la relation. Merci. –

Questions connexes