3つのモデルがある場合:
モデルSection
モデルUser
has_many :votes
モデルVote
belongs_to :user
およびモデル内Section
has_many :users
has_many :votes, :through => :users
AR
アソシエーションを使用して投票数順にセクションリストを取得するにはどうすればよいですか?
3つのモデルがある場合:
モデルSection
モデルUser
has_many :votes
モデルVote
belongs_to :user
およびモデル内Section
has_many :users
has_many :votes, :through => :users
AR
アソシエーションを使用して投票数順にセクションリストを取得するにはどうすればよいですか?
これを行う最も合理的な方法は、次のように結果を並べ替えるために生のSQLとして記述されたサブクエリを使用することです...
Section.order(
'(select count(1) from votes inner join users on votes.user_id=users.id where users.section_id=sections.id)'
)
Section.joins(users: :votes).group(:id).order('COUNT(*)')