Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails模型范围内强制执行特定顺序_Ruby On Rails_Model - Fatal编程技术网

Ruby on rails 在Rails模型范围内强制执行特定顺序

Ruby on rails 在Rails模型范围内强制执行特定顺序,ruby-on-rails,model,Ruby On Rails,Model,我的rails代码中有一个模型M。它有一个字段F,可以有4个值D、J、M和Z 如果我使用这样的范围,它将按字段F字母顺序对数据进行排序: default scope {order (F: :asc)} 我这里有两个问题: 我不想在F上按字母顺序对数据排序。我希望数据以F的特定顺序显示。我总是希望字段F首先包含值M的记录,然后是值J,D的记录,然后是Z,顺序如下。我怎样才能做到这一点 假设我想先显示具有J的记录,然后按字段F的字母顺序对其余记录进行排序,我该怎么做 您可以使用CASE语句进行排序

我的rails代码中有一个模型
M
。它有一个字段
F
,可以有4个值
D
J
M
Z

如果我使用这样的范围,它将按字段
F
字母顺序对数据进行排序:

default scope {order (F: :asc)}
我这里有两个问题:

  • 我不想在
    F
    上按字母顺序对数据排序。我希望数据以
    F
    的特定顺序显示。我总是希望字段
    F
    首先包含值
    M
    的记录,然后是值
    J
    D
    的记录,然后是
    Z
    ,顺序如下。我怎样才能做到这一点

  • 假设我想先显示具有
    J
    的记录,然后按字段
    F
    的字母顺序对其余记录进行排序,我该怎么做


  • 您可以使用CASE语句进行排序

    order("CASE WHEN F = 'M' THEN 0 WHEN F = 'J' THEN 1 WHEN F = 'D' THEN 2 ELSE 3 END")
    
    或者(如果只有“M”需要排在第一位,其余的可以按字母顺序排列)


    您可以使用CASE语句进行排序

    order("CASE WHEN F = 'M' THEN 0 WHEN F = 'J' THEN 1 WHEN F = 'D' THEN 2 ELSE 3 END")
    
    或者(如果只有“M”需要排在第一位,其余的可以按字母顺序排列)


    它们是列
    F
    的值。它们在数据库的表
    M
    中定义。那么它们的值是什么呢?常数必须有值。
    D
    J
    M
    Z
    -它们是列
    F
    的不同值。它们是列
    F
    的值。它们在数据库的表
    M
    中定义。那么它们的值是什么呢?常量必须有值。
    D
    J
    M
    Z
    -它们是列
    F
    的不同值。当我尝试上述操作时,我发现一个错误
    函数数组位置不存在。Aldo当我在google中搜索
    array\u position rails
    时,我找不到任何关于这方面的文章或文档
    array\u position
    是一项
    postgreSQL
    功能。我将修改我的答案,给出一个通用的解决方案。好的,不那么紧凑,但更通用,让我知道你进展如何。这很有魅力!多谢!很抱歉延迟了回复。几分钟前我就可以开始尝试了。当我尝试上述方法时,我发现一个错误
    函数数组\u位置不存在。Aldo当我在google中搜索
    array\u position rails
    时,我找不到任何关于这方面的文章或文档
    array\u position
    是一项
    postgreSQL
    功能。我将修改我的答案,给出一个通用的解决方案。好的,不那么紧凑,但更通用,让我知道你进展如何。这很有魅力!多谢!很抱歉延迟了回复。几分钟前我就可以试一下了。