我在 Rails 3 应用程序中有一个多态关联,其中User
可能喜欢各种类的对象。
class Favorite < ActiveRecord::Base
belongs_to :user
belongs_to :favoriteable, :polymorphic => true
end
class User < ActiveRecord::Base
has_many :favorites
end
class Image < ActiveRecord::Base
has_many :favorites, :as => :favoriteable
end
class Video < ActiveRecord::Base
has_many :favorites, :as => :favoriteable
end
例如,我希望能够返回一个仅包含 a 的User
列表favorite_images
。
user.favorite_images #returns a list of the images associated with the user via :favoritable
我猜有一种简单的方法可以做到这一点,但我无法弄清楚。如果您需要更多信息,请告诉我。
谢谢!
===edit==== 我知道我可以通过
favorite_images = user.favorites.collect{|f| if f.favoriteable_type=='Image'; f.favoriteable; end}
我可以为该类定义一个实例方法User
并将其放入其中。我想知道是否有办法将其作为某种has_many
关联。真的只是因为继续前进,将所有这些都集中在一个地方会更容易。