2012-11-28 76 views
0

三個表,對於分佈式圖書館系統:複雜的ActiveRecord查詢 - 哈希中搜索

Class Book  # model: id, name, auhtor 
    has_many :book_belongs 
    has_many :owners, through: :book_belongs, source: :user 

Class User  # model: id, name, email, facebook_uid, facebook_friends 
    has_many :book_belongs 
    has_many :ownedbooks, through: :book_belongs, source: :book 

Class BookBelong # model: user_id, book_id 
    belongs_to :user 
    belongs_to :book 

@ user.facebookfriends是包含用戶的Facebook好友facebook_id和facebook_name一(連載)哈希

我在設計一個ruby/rails主動記錄查詢時遇到了問題:

  • 返回由Facebook好友擁有的圖書。

在「english」中,查詢應該查看書籍所有者facebook_id並與用戶facebook_friends哈希匹配。

  • 有沒有更好的方法來設計表/數據模型,使其更簡單和更便宜的計算?

回答

0

確定 - 求解,使用

BookBelong.joins(:book).joins(:user).where('users.uid' => current_user.friends.keys) 

,並使用一個簡單的

<% @friends_books.each do |book| %> 
    <td><%= book.book.name %></td> 

似乎沒有成爲超高效,但越來越善於視圖的實際書籍。