2012-11-28 43 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> 

似乎没有成为超高效,但越来越善于视图的实际书籍。