2009-11-12 87 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