2016-07-28 11 views
0

Ich habe verschachtelt Modellstruktur:verschachtelte Verbände, Gruppen und Reihenfolge von Graf Joining

class Forum < ActiveRecord::Base 
    has_many :topics 

class Topic < ActiveRecord::Base 
    has_many :posts 
    belongs_to :forum 

class Post < ActiveRecord::Base 
    belongs_to :topic 
    has_many :post_links 
    has_many :links, ->{ uniq }, through: :post_links, dependent: :destroy 

class PostLink < ActiveRecord::Base 
    belongs_to :post 
    belongs_to :link 

class Link < ActiveRecord::Base 
    has_many :post_links 
    has_many :posts, ->{ uniq }, through: :post_links, dependent: :destroy 

Deshalb möchte ich alle Verbindung erhalten, die in Beiträgen, die in Themen sind, die mit der ID in Forum sind = 1

Und sortieren Sie sie absteigend nach Anzahl der Vorkommen in diesem Forum.

Also, wenn ich youtube.com 5 mal in einigen Beiträgen im Forum habe mit id = 1 und 10 Mal google.com dann würde Ich mag wie etwas haben:

id,name,mentions_count 
1,google.com,10 
2,youtube.com,5 
+0

Anzahl von was? – emrahbasman

+0

Anzahl der Link-Erwähnungen in allen Posts in diesem Forum. –

+0

Bestellen Sie Beiträge in Forum 1 nach ihren Links zählen? – emrahbasman

Antwort

0
Forum.where(id: 1).joins(topics: [posts: [:links]]).order("count_all DESC").group("links.host").count 
=> {"youtube.com"=>5, "google.com"=>2} 

ich davon ausgegangen, dass Sie Hostspalte in Ihrer Linktabelle