[英]Get a random, unvoted-on post in Rails
所以我有一個帶有三個基本模型的Rails應用程序: Entry
, User
和Vote
。 我需要一個輔助方法,該方法將給我一個隨機帖子供用戶投票:
def next_entry
Entry.where(:receiving_challenge_id => current_voting_challenge.id).offset(rand(Entry.where(receiving_challenge_id: current_voting_challenge.id).count)).first
end
這行得通,每次都會抓取一個隨機帖子。
投票歸用戶和條目所有,它們通過數據庫中的ID相關聯。
但是我不想給用戶他們投票的帖子。
我該怎么做?
-獲取所有條目的ID
-獲取用戶對其進行投票的所有條目的ID
-從第一個減去第二個
-使用sample
方法從該數組中獲取任何數字,然后從數據庫中提取具有該ID的條目:
Entry.find((Entry.all.collect(&:id) - current_user.votes.collect(&:entry_id)).sample)
首先,獲取他們已投票的條目。 然后獲取所有不同的條目
voted_entries = user.votes.includes(:entry).collect(&:entry)
unvoted_entries = Entry.where('id NOT IN (?)', voted_entries.collect(&:id))
然后,您可以在unvoted_entries
上調用sample
以獲得隨機數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.