簡體   English   中英

在Rails中獲得隨機且未經投票的帖子

[英]Get a random, unvoted-on post in Rails

所以我有一個帶有三個基本模型的Rails應用程序: EntryUserVote 我需要一個輔助方法,該方法將給我一個隨機帖子供用戶投票:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM