1

我有一个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”。

4

2 回答 2

2

您是否考虑过在列counter_cache旁边添加favoritings_count

于 2013-09-30T17:49:02.910 回答
0

不,添加的方法has_many列在http://guides.rubyonrails.org/association_basics.html的 4.3.1 中,并且不包括该名称的方法。

于 2013-09-30T17:48:13.067 回答