mysql - 在 Rails 中获得一个随机的、未投票的帖子

标签 mysql ruby-on-rails ruby activerecord

所以我有一个包含三个基本模型的 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)

关于mysql - 在 Rails 中获得一个随机的、未投票的帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15996499/

相关文章:

javascript - 如何在使用 Paperclip 上传图像时发出通知

ruby-on-rails - 在本地运行 Rails 应用程序 - 创建本地版本的数据库模式,Rake 失败

ruby - 如何跳过 CSV 文件的第一行并将第二行作为标题

php - 存储、更新、删除、预览图像

mysql - 从 Mysql 获取 highstock 面积图数据。

mysql - 如何连接2个mysql表

MySQL:如何根据 WHERE 子句的结果计算 ORDER BY 子句的 SUM

ruby-on-rails - rvm,将 gemset 关联到项目

ruby - 为退出结束的错误情况编写Rspec测试

ruby - 将 splat 运算符与 when 一起使用