2011-01-09 14 views
0

たとえば、ユーザーが書籍を評価できるアプリがあるとします。表はユーザー(id)、書籍(id)と評価(user_id、book_id、value)です。私は、現在のユーザーによって行われた彼らの評価ですべて(両方とも定格およびレートがありません)図書のリストを取得したい、これらのモデルに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 

を作りました。外部結合が、私はRailsの中でそれを行う方法を見つけ出すことができないとそれはSQLで簡単です3.

答えて

0

... SQLで外部結合を指定する必要がありますレールも簡単です。おそらく、書籍でもユーザーとの関係を追加する必要があります。

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

current_user.books.includes(:ratings).all 

が有効です。

+0

これは評価された書籍のみを返しますが、私はそれらのすべてが必要です – synapse

関連する問題