Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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_Ruby - Fatal编程技术网

Ruby on rails 验证Rails中偏好投票的多个选择

Ruby on rails 验证Rails中偏好投票的多个选择,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在尝试创建一个页面,用户可以在其中按照他们选择的顺序对某些项目进行投票 有大量的选项可供选择,例如,可能有三个选项可供选择[苹果、香蕉、橙子],因此每个选项都有一个选择,每个选择都有三个优先顺序值[1,2,3] 结果集可能类似于: [apples,2],[bananas,3],[oranges,1] 我最终会处理它,这样我就有了[橙子,苹果,香蕉]在一个数组中 我如何验证所有选项都已选择,并且可以看到它们是有序的 我是否需要通过一个循环传递数据,该循环按所选的首选项对数据进行排序,然后计数

我正在尝试创建一个页面,用户可以在其中按照他们选择的顺序对某些项目进行投票

有大量的选项可供选择,例如,可能有三个选项可供选择[苹果、香蕉、橙子],因此每个选项都有一个选择,每个选择都有三个优先顺序值[1,2,3]

结果集可能类似于:

[apples,2],[bananas,3],[oranges,1]
我最终会处理它,这样我就有了
[橙子,苹果,香蕉]
在一个数组中

我如何验证所有选项都已选择,并且可以看到它们是有序的

我是否需要通过一个循环传递数据,该循环按所选的首选项对数据进行排序,然后计数以查看是否缺少首选项


或者我错过了一个已经完成这项工作的优秀插件吗?

这将进行验证,并检查是否有投票支持
1、2、3,而没有其他人

s = [[:apples,2],[:bananas,3],[:oranges,1]]
s.map(&:last).sort == (1..3).to_a
要获取排序数组,请使用以下命令:

s.sort{|a,b| a.last <=> b.last}.map(&:first)

那看起来很有趣,你能解释一下吗?我该如何使用你提到的代码进行验证呢?哇,谢谢彼得-这真是太棒了!我猜我可以将预期数组的长度作为参数传递给验证?每次用户有选择时,选项的数量可能会有所不同。您完全可以传入参数(任何时候看到3,都可以替换为n)。
validate :valid_votes?

def valid_votes?
  unless votes.map(&:last).sort == (1..3).to_a
    errors.add(:votes, 'are missing, duplicated or invalid')
  end
end