2017-06-14 2 views
0

Ich habe so ziemlich das gleiche Szenario wie dieser Beitrag, Rails ActiveRecord sort by count of join table associations, aber ich kann es nicht ganz zur Arbeit bekommen.Zählen und Sortieren auf Join Tabelle in Rails 5

Ich habe eine Tabelle mit dem Namen coffeeshops, wo eine Tabelle users Favorit ein Café über eine dritte Tabelle namens favorite_coffeeshops kann. Ich benutze den acts_as_taggable Edelstein.

class Coffeeshop < ApplicationRecord 
    has_many :favorite_coffeeshops# just the 'relationships' 
    has_many :favorited_by, through: :favorite_coffeeshops, source: :user 

class FavoriteCoffeeshop < ApplicationRecord 
    belongs_to :coffeeshop 
    belongs_to :user 

class User < ApplicationRecord 
    has_many :coffeeshops 
    has_many :favorite_coffeeshops # just the 'relationships' 
    has_many :favorites, through: :favorite_coffeeshops, source: :coffeeshop 

In meinem Controller habe ich folgendes:

def index 
.... 

@favshops = Coffeeshop.select 
('coffeeshops.*, count(favorite_coffeeshops.coffeeshop_id) as favorite_coffeeshops_count') 
.joins(:favorite_coffeeshops.group(:favorite_coffeeshops.coffeeshop_id) 
.order('favorite_coffeeshops DESC') 
end 

Ich bin eigentlich ein Syntaxfehler bekommen, bevor ich kann auch prüfen, ob die Abfrage richtig ist. Geht es darum, die Zeichenfolge über mehrere Zeilen zu wickeln?

SyntaxError (/Users/Simon/gourmet_coffee/app/controllers/home_controller.rb:12: syntax error, unexpected keyword_end, expecting ')' 
    end 
    ^
/Users/Simon/gourmet_coffee/app/controllers/home_controller.rb:17: syntax error, unexpected end-of-input, expecting keyword_end): 

Antwort

0

Der Syntaxfehler Sie sagt, dass es ein ) Charakter erwarten eine Klammer zu schließen, aber eine end Aussage statt zu erreichen.

Wenn Sie an dieser Linie aussehen:

.joins(:favorite_coffeeshops.group(:favorite_coffeeshops.coffeeshop_id)

(die Linie 12 nach Ihrem Syntaxfehler sein soll), dann kann man sehen, dass es zwei Öffnung ( Zeichen, aber nur eine Schließung ) .

So die Syntaxfehler zu beheben, müssen Sie nur die fehlenden ) für die joins Methode hinzuzufügen, bevor die group Methode aufgerufen wird, d.h .:

.joins(:favorite_coffeeshops).group(:favorite_coffeeshops.coffeeshop_id)