2009-11-12 58 views
3

我有STI和ActiveRecord中的关系问题。我想我错过了班级方法中的一些东西,但我并不确定。下面是我的模型:与单表继承(Rai​​ls)的一对多关系问题

class User < ActiveRecord::Base 
    has_many :advertisements 
end 

class Advertisement < ActiveRecord::Base 
    belongs_to :user 
end 

class FreeAdvertisement < Advertisement 
end 

class PaidAdvertisement < Advertisement 
end 

现在我想找到某个用户下的所有FreeAdvertisement,如:

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

它提供了错误:

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

我可以用u.advertisements.find :all, :conditions本事,但那不是我想要做的。 请帮我解决这个问题。提前致谢。

回答

4

我想你想要的是:

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

它的工作原理。看来,我必须将整个子对象添加到关系中。谢谢。 – 2009-11-13 17:36:40