0

我有一个表格,可以将我的用户与他们已支付的款项和他们的价值观联系起来。

我需要能够找到用户付款的排名。这就是说:

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

或者:

User pays $10

There are three people who have paid more than $10

Return 4
4

1 回答 1

1

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

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

虽然您可以查询少于支付金额的所有支付记录@user以获得一个数字,但它不会考虑支付相同金额的记录,因为您不知道支付相同金额的用户哪个先出现。

于 2012-08-23T15:52:49.277 回答