所以我有一个包含三个基本模型的 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)
关于mysql - 在 Rails 中获得一个随机的、未投票的帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15996499/