对具有多个条件的列表进行排序 Ruby on Rails

2024-02-20

我希望能够根据 4 个不同的标准对列表中的 12 支球队进行排名。

我将有一个名为 Teams 的数据库表,每个团队将有各种列,例如 matches_won、matches_lost 等...

我想根据 matches_won 按顺序显示它们。这很容易。但是,如果两支球队在 matches_won 中打成平手,那么我必须检查他们是否已经交手以及谁赢了。如果他们有相同的 matches_won 并且没有互相比赛过,那么他们的记录将根据另外两个标准进行比较并据此进行排名。我想,如果我能弄清楚如何做一个附加条件,我就能弄清楚如何做其他条件。因此,为了简洁起见,我不会在这里详细介绍它们。

我不知道如何在 Rails 中进行这种多级排序。

我想也许在数据库表和 before_save 函数中添加一个“排名”列,对它们进行排名进入数据库,然后根据该排名在视图中简单地列出它们。但这给我带来了同样的问题(不知道如何进行条件排序),它只是在保存之前执行,而不是在我从数据库中读取它时执行。

任何帮助,将不胜感激!


Use sort_by http://rubydoc.info/stdlib/core/1.9.3/Enumerable#sort_by-instance_method并提供一组值。它将按从左到右的顺序比较它们。默认排序是升序,因此如果您想要相反的排序(例如 matches_won 应按降序排序,以便大多数匹配项排在第一位,而不是 matches_lost,后者应从低到高排序),则需要否定该值。

这是一个例子

require 'pp'
Team = Struct.new :won, :lost, :demerits, :style

teams = Array.new(20) { Team.new rand(5), rand(5), rand(5), rand(5) }
puts "Before sort:"
pp teams

puts "", "After sort:"
pp teams
teams.sort_by! { |team| [-team.won, team.lost, team.demerits, -team.style] }
# >> Before sort:
# >> [#<struct Team won=1, lost=2, demerits=4, style=3>,
# >>  #<struct Team won=0, lost=4, demerits=2, style=2>,
# >>  #<struct Team won=4, lost=1, demerits=2, style=3>,
# >>  #<struct Team won=1, lost=4, demerits=1, style=4>,
# >>  #<struct Team won=3, lost=1, demerits=1, style=4>,
# >>  #<struct Team won=3, lost=4, demerits=1, style=2>,
# >>  #<struct Team won=4, lost=0, demerits=4, style=0>,
# >>  #<struct Team won=3, lost=4, demerits=1, style=2>,
# >>  #<struct Team won=1, lost=4, demerits=1, style=2>,
# >>  #<struct Team won=3, lost=0, demerits=1, style=1>,
# >>  #<struct Team won=3, lost=4, demerits=3, style=4>,
# >>  #<struct Team won=1, lost=4, demerits=0, style=0>,
# >>  #<struct Team won=3, lost=4, demerits=2, style=0>,
# >>  #<struct Team won=3, lost=0, demerits=3, style=0>,
# >>  #<struct Team won=1, lost=2, demerits=0, style=1>,
# >>  #<struct Team won=3, lost=0, demerits=1, style=0>,
# >>  #<struct Team won=0, lost=4, demerits=1, style=4>,
# >>  #<struct Team won=1, lost=4, demerits=3, style=0>,
# >>  #<struct Team won=3, lost=3, demerits=2, style=3>,
# >>  #<struct Team won=0, lost=4, demerits=4, style=4>]
# >> 
# >> After sort:
# >> [#<struct Team won=4, lost=0, demerits=4, style=0>,
# >>  #<struct Team won=4, lost=1, demerits=2, style=3>,
# >>  #<struct Team won=3, lost=0, demerits=1, style=1>,
# >>  #<struct Team won=3, lost=0, demerits=1, style=0>,
# >>  #<struct Team won=3, lost=0, demerits=3, style=0>,
# >>  #<struct Team won=3, lost=1, demerits=1, style=4>,
# >>  #<struct Team won=3, lost=3, demerits=2, style=3>,
# >>  #<struct Team won=3, lost=4, demerits=1, style=2>,
# >>  #<struct Team won=3, lost=4, demerits=1, style=2>,
# >>  #<struct Team won=3, lost=4, demerits=2, style=0>,
# >>  #<struct Team won=3, lost=4, demerits=3, style=4>,
# >>  #<struct Team won=1, lost=2, demerits=0, style=1>,
# >>  #<struct Team won=1, lost=2, demerits=4, style=3>,
# >>  #<struct Team won=1, lost=4, demerits=0, style=0>,
# >>  #<struct Team won=1, lost=4, demerits=1, style=4>,
# >>  #<struct Team won=1, lost=4, demerits=1, style=2>,
# >>  #<struct Team won=1, lost=4, demerits=3, style=0>,
# >>  #<struct Team won=0, lost=4, demerits=1, style=4>,
# >>  #<struct Team won=0, lost=4, demerits=2, style=2>,
# >>  #<struct Team won=0, lost=4, demerits=4, style=4>]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对具有多个条件的列表进行排序 Ruby on Rails 的相关文章

  • 回形针/乘客 NotIdentifiedByImageMagickError:

    当我尝试上传照片时红宝石 on Rails http en wikipedia org wiki Ruby on Rails using 回形针 http github com thoughtbot paperclip在我的本地机器上它运行
  • 表情符号未正确保存在 mongodb 中

    我正在将 Twitter 和 Instagram 上的表情符号保存到我的 mongodb 数据库中 但是当我显示从数据库中提取的数据时 表情符号看起来像这样破损了 在将数据保存到 mongodb 期间我需要做一些不同的事情吗 我是 mong
  • 带有 Rake 的 RubyMine 调试器?

    使用 RubyMine 3 0 我设置了 Rake 配置来运行单元测试 然后我设置了一些断点 然后运行 Rake 任务 没有命中断点 测试只是像平常一样执行 然后退出 RubyMine 调试器无法通过 Rake 运行吗 尝试这个 转到运行
  • 使用 Ruby 的“open-uri”打开 utf-8 URI 时遇到问题

    我正在尝试使用 ruby 和 open uri 从谷歌地图网络服务 API 获取丹麦位置地址 试图得到丹麦艾勒 http maps googleapis com maps api geocode json address r sensor
  • 使用yard创建文档时如何防止[查看源代码]链接?

    我正在使用yard生成项目文档 但我不想在文档中显示 查看源代码 链接 我已深入研究yard官方指南 但仍然没有得到解决方案 有什么想法吗 谢谢 我可能有点晚了 但您可以通过从 method details 部分中删除 源 部分来轻松自定义
  • 使用哈希时 fetch 与 [] ? [复制]

    这个问题在这里已经有答案了 来自鲁比 科恩斯about hashes rb 为什么你可能想使用 fetch代替 当访问哈希键时 默认情况下 使用 如果存在则检索哈希值 如果不存在则返回 nil Using fetch给你一些选择 请参阅文档
  • heroku 上的 bitbucket 私有存储库

    我有一个需要 gem 的 Rails 应用程序 我将这个 gem 托管在私有存储库的 bitbucket 上 在我的 Gemfile 中 我添加了 gem 如下所示 gem my gem git gt gi email protected
  • 用一种方法进行 Ruby 选择和拒绝

    是否有任何内置方法可以结合以下功能Enumerable select 找到该块等于 true 的所有内容 和Enumerable reject 找到该块中所有等于 false 的内容 就像是 good bad list magic meth
  • 设计 - 创建用户帐户并确认而不发送电子邮件?

    我将设备与 facebook 集成 现在 当我在用户使用他 她的 Facebook 帐户登录后创建用户帐户时 user User create email gt data email password gt Devise friendly
  • Rails 4 单选按钮表单助手,true 不验证

    我在 needs dist 上附加了简单的是或否单选按钮 当我提交表单时选择 否 它工作得很好 但是当我选择 是 时 它会抛出验证错误吗 它仅在 needs dist gt true 时有效 Model validates presence
  • Rails error_messages 帮助器

    这是一段很常见的代码 First name br error messages是一个辅助方法 但我很难找到它的文档 为什么呢 我在这里找到它们 error messages 具有相同的参数错误消息 http apidock com rail
  • Ruby/Rails - 如何创建类并从控制器访问它

    我一直在尝试使用一些不同的 gem 在 Rails 3 中显示谷歌地图 但遇到了一些问题 幸运的是我发现了这个https github com YouthTree bhm google maps https github com Youth
  • 如果你使用belongs_to而没有相应的has_one,会发生什么?

    我有一个核心模型Item 以及一个从自定义源 例如 RSS feed 填充它的脚本 在 feed 中 每个项目都用一个标识guid 在我的系统中 项目只有一个自动生成的id首要的关键 我想要 比方说 ItemFeedInfo那个地图guid
  • 查询,无法选择列数

    Tag joins quote tags group quote tags tag id order count desc select count tags id AS count tags id tags name Build quer
  • 使用 Paperclip 和 Multipart 请求将文件上传到 Rails JSON API 服务器

    我想将文件从 Android 客户端上传到 Rails JSON API 服务器 我正在从 Android 客户端发送一个 Multipart form 请求 如下所示 Content Type multipart form data bo
  • 没有 Gem 的 Rails 分页

    我的任务是在不使用 gem 的情况下为 Rails 项目创建 前 10 个 后 10 个 最新 和 最旧 链接 在控制器中 我可以显示表中第一组 最新的 10 项 before action set page only index def
  • 使用 ActiveRecord::Relation 时的 RSpec 匹配器

    所以这是我要测试的方法 def self by letter letter where lastname LIKE letter order lastname end 简单问一下 letter 后面的百分号到底有什么作用 跟格式化有关系吗
  • 如何使用 RSpec 测试 javascript 重定向?

    我正在使用 xhr post 与控制器交互 并且我期待重定向 在 js erb 中 我有 window location href address 手动测试 浏览器会正确重定向 我如何使用 RSpec 测试它 response should
  • Mac + Ruby:无法访问 Socket 的 ioctl?怎么修?

    一天中的好时光 红宝石代码 def hw address iface sock Socket new Socket AF INET Socket SOCK DGRAM 0 buf iface pack a16h16 sock ioctl S
  • Rails“where”方法通过子属性查找父级

    我有一个 Rails 应用程序 我试图根据子类的日期创建父类的列表 现在我有 orders Order where order reminders date lt 1 month from now 但我收到一个错误 没有这样的列 order

随机推荐

  • 分析字母数字字符串的格式

    我正在尝试编写一个函数 该函数接受一个字符串 对其进行解析 然后返回另一个字符串 该字符串总结了原始字符串中连续字母或数字字符的数量 例如 字符串999aa45bbx会回来3N2A2N3A i e 3个数字 接下来是 2 个阿尔法 2 个数
  • 函数重载和函数指针

    函数的名称是指向该函数的指针 但在函数重载的情况下 两个函数的名称是相同的 那么这个名字指向哪个函数呢 这取决于上下文 否则它是模棱两可的 看这个例子 http www java2s com Code Cpp Function Assign
  • 使用正则表达式删除 HTML 标签

    我需要转换 text We had i fun i Look at a href http example com this photo a of Joe 编辑 文本中可能有多个链接 to text We had fun Look at t
  • 使用cin两次的问题

    这是代码 string str cin gt gt str cout lt lt first input lt
  • Jupyter Notebooks 中的 Python 版本和环境的 VSCode 问题

    Issue 我遇到的问题是 Python 的环境和版本与 VSCode 中的设置不匹配 并导致我尝试在 Jupyter 笔记本中使用的包出现问题 我使用的是安装了 Python 3 9 1 包括旧版本 和 Visual Studio Cod
  • IActionFilter 和 IAuthorizationFilter 之间的区别

    我只是想知道两者之间是否有什么区别IActionFilter and IAuthorizationFilter 我假设我们可以在下面实现相同的逻辑IActionFilter可能有IAuthorizationFilter 真的吗 Thanks
  • 从 C++ 中的 std::string 中删除空格

    在 C 中从字符串中删除空格的首选方法是什么 我可以循环遍历所有字符并构建一个新字符串 但有更好的方法吗 最好的办法就是使用算法remove if http en cppreference com w cpp algorithm remov
  • jQuery UI:日期选择器将年份范围下拉设置为 100 年

    使用日期选择器时 年份下拉菜单默认仅显示 10 年 用户必须单击去年才能添加更多年份 我们如何将初始范围设置为 100 年 以便用户默认看到一个大列表 function InitDatePickers datepicker datepick
  • GZipStream 进行 gzip 压缩,但解压缩文件最终会出现“数据意外结束”

    有谁知道为什么我在解压缩 gzip 文件时收到 数据意外结束 错误消息 为了验证字节数据没有损坏 我使用FooTest4 csv写入文件并能够成功打开该文件 两者都是 FooTest3 csv gz and FooTest2 csv gz解
  • 如何忽略 PHP 中未定义的变量错误[重复]

    这个问题在这里已经有答案了 我最近设置了一个新的网络服务器 但遇到了未定义的变量错误 如果我在没有初始化的情况下使用变量 则会出现错误 源代码没有改变 只有 LAMP 环境可以 你会如何解决这个问题 Thanks Well 您应该定义所有变
  • SVG viewBox 反转 Y 坐标

    我正在使用 SVG 在 HTML 页面中绘制不同的形状 这些不同的形状是从 Microsoft Sql Server 中的空间数据库的几何对象中检索的 我面临的问题是坐标系统 Svg 和 Microsoft Sql Server 不同 0
  • 调整highlight.sector() 宽度和位置 - R 中的和弦图(circlize 包)

    我需要一些帮助来调整突出显示的部分chordDiagram 来自 circlize 包 我正在处理渔业上岸数据 渔船从一个港口出发 母港PORT DE 并将他们的捕获物降落在另一个港口 登陆港PORT LA 我正在处理扇贝活重 吨 上岸量S
  • 如何在 vim 中搜索没有前面“\r”的“\n”?

    如果 Vim 看到不一致的行结尾 则不会转换文件格式 我怎样才能找到那些 零宽度后向断言 如何在 vim 中搜索没有前面 r 的 n r
  • JAVA Quartz - 如果上一个作业仍在运行,则跳过作业并等待下一个计划时间

    我有一个 Java 解决方案 使用Quartz 2 2 3 我所拥有的是 我的工作类别已注释 DisallowConcurrentExecution为了避免并发 所以同一个作业不能每次运行一次 OK 它是一个 CRON 每 1 小时运行一次
  • R:使用paste()定义列名

    问题很简单 但我找不到解决方案 我想创建一个新的数据框 定义列的名称paste0 理想情况下 我想做这样的事情 其中一个不起作用 mydataframe lt data frame id 1 paste0 Here my column na
  • 当使用自定义动画的片段替换事务正在运行时暂停活动时出现幽灵行为

    我正在使用片段事务在按下按钮时在组件之间切换 为了使整体体验更好 我添加了自定义动画 将旧片段从左侧动画化 将新片段从右侧动画化 启动此事务的代码如下所示 supportFragmentManager beginTransaction se
  • 如何在 C# 中格式化日期时间,如“Oct. 10, 2008 10:43am CST”

    有没有一种干净的方法将 DateTime 值格式化为 Oct 10 2008 10 43am CST 我需要它带有正确的缩写和小写的 am 或 pm 等 我自己做过 但它很丑 所以我正在寻找不同的方法 Thanks 由于 tt 格式字符串说
  • PHP 绑定文本域失败

    我正在尝试在运行 PHP 7 1 的 CentOS 服务器上设置 PHP 国际化 这是我的目录结构 home project public html locale japanese LC MESSAGES messages po home
  • Django 检查字段是否为空?

    我从数据库中检索了一个对象 该对象有一个外键字段 其属性blank True 我如何检查它是否实际上留空 谢谢您的帮助 blank True只是告诉管理站点该字段可以留空 除非你设置null True同样 如果您尝试输入空白值 您的数据库也
  • 对具有多个条件的列表进行排序 Ruby on Rails

    我希望能够根据 4 个不同的标准对列表中的 12 支球队进行排名 我将有一个名为 Teams 的数据库表 每个团队将有各种列 例如 matches won matches lost 等 我想根据 matches won 按顺序显示它们 这很