Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
在rails 3中查找数据库条目相对于mysql数据库中字段的顺序或等级_Mysql_Ruby On Rails - Fatal编程技术网

在rails 3中查找数据库条目相对于mysql数据库中字段的顺序或等级

在rails 3中查找数据库条目相对于mysql数据库中字段的顺序或等级,mysql,ruby-on-rails,Mysql,Ruby On Rails,我有一个表格,将我的用户与他们支付的款项及其价值联系起来 我需要能够找到一个用户支付排名。这就是说: Find Users payment -> Order Payments by value descending -> Return row position of users payment. 或: 我不确定是否有办法通过Arel界面实现这一点,但您可以这样做(假设您的用户已加载到@user) 虽然您可以查询所有支付金额小于@user的付款记录以获得一个数字,但它不会计算支付相同

我有一个表格,将我的用户与他们支付的款项及其价值联系起来

我需要能够找到一个用户支付排名。这就是说:

Find Users payment -> Order Payments by value descending -> Return row position of users payment.
或:


我不确定是否有办法通过Arel界面实现这一点,但您可以这样做(假设您的用户已加载到
@user


虽然您可以查询所有支付金额小于
@user
的付款记录以获得一个数字,但它不会计算支付相同金额的记录,因为您将不知道支付相同金额的用户的第一个付款记录。

我的理解是正确的,例如,如果有10个付款记录,对于这个特定的用户,数字是2,您只需要将数字2作为返回值??准确地说。我将添加该示例。如果用户A支付了20美元和15美元,而用户B支付了10美元;您想为用户B返回2还是3?好问题。现实地说,这不是非常低效吗?我认为这是可行的,不要求所有的付款?可能,是的。取决于数据库的大小。我确实喜欢获得比当前用户付费更少的记录的想法,但是如果用户付费100美元,这可能会很高,而有+100个用户付费更少,这也可能对您不利。也许解决方案是两个鸡蛋的问题,或者甚至是二进制搜索:
User pays $10

There are three people who have paid more than $10

Return 4
idx = nil
Payment.order("value desc").each_with_index do |payment, index|
  if payment.user_id == @user.id
    idx = index
    break
  end
end