我在Rails中实现简单的投票系统是否有效?

伯尼·邱

我在示例Rails应用程序中设计了一个简单的投票系统。

我有一个从Vote模型调用该方法的控制器

@popular_links = Link.includes(:votes).top

这就是top我的link.rb工作方式:

def self.top
    self.all.sort do |a, b|

    # Calculate each link's vote counts
    a_votes = a.votes.where(:up => true).count -
              a.votes.where(:up => false).count
    b_votes = b.votes.where(:up => true).count -
              b.votes.where(:up => false).count

    # Compare it from highest value to lowest value
    b_votes <=> a_votes
  end.first(6)
end

我不确定我所做的工作是否有效。

还是有一个单行的Rails SQL命令可以帮助我像这样对计算进行排序?

理查德·派克(Richard Peck)
  1. 将属性重命名:up:vote(我的偏好)
  2. 使用SQL在数据库级别进行计算
  3. 仅从db返回6条记录(您当前正在返回所有数据)

代码

@popular_links = Link.includes(:votes).top

def self.top
    self.all.sort do |a, b|
        a_votes = a.votes.sum(:up)
        b_votes = b.votes.sum(:up)
        b_votes <=> a_votes
    end.first(6)
end

- or - 

def self.top
    self.joins(:votes).select("links.*, SUM(votes.up) as votes_num").order("votes_num DESC").limit(6)
end

我在这里找到了第二个:Ruby on Rails,找到了按购买顺序排序的前5位用户

在db级别,您的boolean列仅tinyint在MYSQL中(请在此处检查数据类型),这意味着true/false将为10因此,该列的总和将给出该链接的净票数

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

最有效/最简单的权限系统方法?

.NET中的混合密码系统实现。错误指定的密钥不是此算法的有效大小

Java实现有效的FPS系统

在PySpark 1.6中是否有更有效的方法来实现余弦相似度?

是否有任何(有效)C实现中的float不能表示值0?

我正在编写一个非常简单的字母分级系统,if 语句是最有效的吗?

使用Mutt归档Gmail邮件:简单地删除Mutt中的邮件是否有效?

简单的游戏算法,检查移动是否有效

Web浏览器中折叠边框模型的实现是否有效?

使用随机森林算法进行欠采样时,多数投票预测是否有效?

Spring Webflux中的实现“有效”,但是我试图理解“为什么?”

defaultProps在ReactJs中是否有效

路径:在#include中是否有效?

Fortran 90中的'==','>'或'<'是否有效?

& 在 HTML 属性中是否有效?

以下快速排序的 Haskell 实现是否有效?

“我找不到有效的X窗口系统”

带有jQuery,Ajax和PHP的投票系统仅在本地服务器上有效

python中列表的简单更改:有效的方法?

使这个简单的循环在R中更有效?

我检查数据库中数据的逻辑是否有效?

在Swift中,我可以检测CLLocation是否有效吗?

如何通过ab:commandButton中的oncomplete函数来验证我的表单是否有效?

如果我从 URL 中删除 .html 旧链接是否仍然有效?

如何检查日期是否有效(Ruby on Rails)

这是Java中ServiceLocator模式的有效实现吗?

在python中实现有效的固定大小FIFO

这是Go中组合的有效实现吗?

有效Java hashCode()实现中的位移