我在模型中有这样的联系
class User < ApplicationRecord
has_many :support_user_orders, dependent: :destroy
end
class SupportUserOrder < ApplicationRecord
belongs_to :user
end
我有一个显示一些信息的表格。我需要能够按“收费金额”排序,就像我按 id 排序一样,但如果我像使用 id 那样排序,则不起作用。
def index
user_supports = TestNameQuery.call(period: params[:period])
@ransack = user_supports.ransack(params[:q])
@user_supports = @ransack.result
end
<tr>
<th><%= sort_link @ransack, :id %></th>
<th class="text-nowrap">Charged Amount</th>
</tr>
<tr class="bg-white">
<td><%= link_to user_support.id, system_user_path(user_support) %></td>
<td><%= user_support.support_user_orders.sum(:charged_amount) %></td>
</tr>
我尝试了这样的方法,但它不起作用
@user_supports = @ransack.result(distinct: true)
<th><%= sort_link @ransack, :charged_amount_sum, 'Charged Amount' %></th>
这对我有用。
ransacker :total_charged_amount do
Arel.sql("(SELECT SUM(charged_amount) FROM support_user_orders WHERE support_user_orders.user_id = users.id)")
end