分散ライブラリ システム用の 3 つのテーブル:
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 の友達が所有する本を返します。
「英語」では、クエリは本の所有者の facebook_id を調べ、ユーザーの facebook_friends ハッシュと一致する必要があります。
- これをよりシンプルにし、計算コストを削減するために、テーブル/データ モデルを設計するより良い方法はありますか?