對不起,如果標題不清楚,我不知道怎麼說更好。如何基於多少個關聯記錄匹配給定數組中的記錄來對記錄列表進行排序?
我有一個模型「播放列表」has_many和belongs_to另一個模型「用戶」,通過中介模型「PlaylistUser」。
假設我在給定播放列表(@playlist
)和@users = @playlist.users
的頁面上。我如何列出所有其他播放列表,由他們與@playlist
共享多少用戶訂購?
所以,如果@playlist.users = ["joe","nick","bob"]
,<playlist2>.users = ["nick","bob","tom"]
和<playlist 3>.users = ["bob","jim","rich"]
,playlist2應該首先列出,因爲它共享2個用戶@playlist
,而playlist3只股票1個用戶。
我希望我做了我想要做的足夠清楚,但讓我知道是否需要額外的說明。
關聯設定:
class Playlist < ActiveRecord::Base
has_many :playlist_users
has_many :users, :through => :playlist_users
end
class PlaylistUser < ActiveRecord::Base
belongs_to :playlist
belongs_to :user
end
class User < ActiveRecord::Base
has_many :playlist_users
has_many :playlists, :through => :playlist_users
end
感謝偉大的答案!如果我打印一個代碼塊:'Playlist。(...)。each do | p |',怎樣才能打印出「count(*)」的值? 'p.count(*)'返回一個錯誤。 –
沒問題。查看更新的答案。 –