复杂的ActiveRecord查询 - 在哈希内搜索

时间:2012-11-28 01:45:24

标签: ruby-on-rails 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 activerecord查询时遇到了麻烦:

  • 返回facebook朋友拥有的图书。

In" english"查询应查看图书所有者facebook_id并与用户facebook_friends哈希匹配。

  • 有没有更好的方法来设计表格/数据模型,使计算更简单,更便宜?

1 个答案:

答案 0 :(得分:0)

好的 - 使用

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

使用简单的

在视图中获取实际的图书
  <% @friends_books.each do |book| %>
    <td><%= book.book.name %></td>

但似乎没有超级效率。