2011-01-09 12 views
0

Angenommen, ich habe eine App, wo Benutzer Bücher bewerten können. Tabellen sind Benutzer (ID), Bücher (ID) und Bewertung (Benutzer-ID, Buch-ID, Wert). Ich habe diese ModelleAbfrage viele zu viele Beziehung in Ruby on Rails

class Rating < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :book 
end 

class User < ActiveRecord::Base 
    has_many :ratings 
end 

class Book < ActiveRecord::Base 
    has_many :ratings 
end 

ich mit ihren Beurteilungen von aktuellen Benutzer eine Liste aller (beide und ohne Rating) Bücher bekommen gemacht. Es ist einfach, in SQL mit Outer-Joins, aber ich kann nicht einen Weg finden, um es in Rails zu tun 3.

Antwort

0

es ist ganz einfach auch in Schienen. Sie sollten wahrscheinlich auch eine Beziehung im Benutzer mit Büchern hinzufügen.

class User < ActiveRecord::Base 
    has_many :ratings 
    has_many :users, :through => :ratings 
end 

current_user.books.includes(:ratings).all 

sollte funktionieren.

+0

Dies wird nur bewertete Bücher zurückgeben, während ich alle brauche – synapse

Verwandte Themen