1
モデルのアーキテクチャは単純です。ソーシャルネットワークフィードのRailsクエリ
class User < ActiveRecord::Base
has_many :hunts, dependent: :destroy
has_many :user_hunts, dependent: :destroy
end
class Hunt < ApplicationRecord
belongs_to :user
has_many :user_hunts, dependent: :destroy
end
class UserHunt < ApplicationRecord
belongs_to :user
belongs_to :hunt
end
User
狩りを作成できます。他のUsers
は、これらの飼料中にhunts
を見ることができます。彼らはそれを受け入れるか拒否することができます。これにより、UserHunt
の行がhunt_id
とuser_id
になります。だから私が欲しいのは、これらのことを満足するHunt
の結果です。
Hunt
User
(hunt.user_id != id
)彼自身ではないの前に狩りを見ていない(これは私が実現するのは困難見つけるのです一部です)
試験の多くの後、これは何です私は思いついた。
Hunt.left_outer_joins(:user_hunts)
.where('user_hunts.user_id != ? OR user_hunts.user_id is null AND hunts.user_id != ?',id,id)
しかし、これは他のユーザーが加入しているhunts
を選択する問題があります。
これは私が信じるウェブサイトの一般的なシナリオです。しかし、私はここで解決策を見つけることができませんでした。前もって感謝します。