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
可以在其Feed中看到這些hunts
。他們可以接受或拒絕。這將在UserHunt
中產生一行hunt_id
和user_id
。所以我想要的是符合這些條款的Hunt
的結果。
Hunt
不是自己的(hunt.user_id != id
)User
未見狩獵之前(這是我發現很難實現的部分)
大量試驗後,這是什麼我想出了。
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
其他用戶所訂閱的一個問題。
這是我相信網站中的一種常見情況。但我無法在這裏找到任何解決方案。提前致謝。