我有一个User
模型,用户可以互相“收藏”。我通过Favoriting
模型作为has_many through
引用User
自身的关系来实现这一点:
class User < ActiveRecord::Base
has_many :favoriting
has_many :favorites, through: :favoritings, source: :favorited
has_many :favoriteds, class_name: "Favoriting", foreign_key: "favorited_id"
has_many :favoriters, through: :favoriteds, source: :user
...
end
class Favoriting < ActiveRecord::Base
belongs_to :user
belongs_to :favorited, :class_name => 'User'
...
end
这一切都很好。我可以做得到u.favorites
一个用户的收藏夹,我也可以做得到u.favoriters
那些收藏过的用户u
。我也可以做得到u.favorites_count
收藏夹的数量。
但是,我无法u.favoriters_count
获取收藏的用户数量u
。
知道是否可以访问这种类型的数据库关系favoriters_count
甚至使用内置方法吗?favoriteds_count
我可以编写自己的代码,但更愿意让代码库尽可能简单和“Rails-y”。