我想使用ActiveRecord来建模以下案例场景:
我有一个有很多收藏夹的用户,收藏夹可以是a 个人资料或小组。
关系将是这样的:
当我访问用户的收藏夹时;如......
> user.favorites
我应该得到一个包含Profile和/或Group ActiveRecord对象的数组。
[#<Profile id:1 ... >, #<Group id ... >, #<Profile ...>, #<Group ...>]
这可能吗?执行此操作的 Rails-way 是什么?
谢谢你,亲切的问候,
答案 0 :(得分:0)
您可以使用Polymorphic Associations
,如下所示:
class User < ActiveRecord::Base
has_many :favorites
end
class Favorite < ActiveRecord::Base
belongs_to :user
belongs_to :favoriteable, polymorphic: true
end
class Profile < ActiveRecord::Base
has_one :favorites, as: :favoriteable
end
class Group < ActiveRecord::Base
has_one :favorites, as: :favoriteable
end
有关示例的详细说明:请阅读Rails官方指南中的Polymorphic Associations。