1

ユーザーがUserお互いに「お気に入り」できるモデルがあります。私はそれ自体への参照への関係Favoritingとしてモデルを通じてこれを達成しています:has_many throughUser

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を取得したり、お気に入りに登録したユーザーを取得したりできますuu.favorites_countお気に入りの数を取得する こともできます。

u.favoriters_countしかし、お気に入りに登録しているユーザーの数を取得することはできませんu

このタイプの DB 関係のための組み込みメソッドへのアクセスがあるかどうか、またはこのタイプの DB 関係でfavoriters_countさえ、何か考えはありますか? favoriteds_count自分でコードを書くこともできますが、コード ベースはできる限りシンプルで「Rails 風」に保ちたいと考えています。

4

2 に答える 2

2

counter_cacheと一緒に追加することを検討しましたか?favoritings_count

于 2013-09-30T17:49:02.910 に答える
0

いいえ、追加されたメソッドはhttp://guides.rubyonrails.org/association_basics.htmlhas_manyの 4.3.1 にリストされており、この名前のメソッドは含まれていません。

于 2013-09-30T17:48:13.067 に答える