我已经在我的rails应用程序中实现了Ransack gem,我正在使用它来搜索/排序表。但是,有几个区域需要按模型方法返回的整数进行排序。
根据我的阅读和研究,为了在Ransack中实现这一点,我必须创建一个基本上将模型方法转换为Arel的ransacker方法。我没有Arel的经验,但一直在研究它。
任何人都可以帮我弄清楚我需要使用什么样的Arel,或者如何最好地创建一个能够满足我需要的搜索者?
型号:
def highest_mileage
high_mileage = Expense.where("vehicle_id = ? and vehicle_mileage IS NOT NULL", self.id).maximum("vehicle_mileage")
mileage = (high_mileage.nil? ? 0 : high_mileage)
return mileage
end
Index.html.haml:
%table
%thead
%tr
%th = sort_link(@q, :highest_mileage)
我尝试了几种不同的方式来实现自定义搜索,但由于我缺乏Arel知识,我很快就会出现问题。以下是关于我试图重现它的内容。
ransacker :highest_mileage do |parent|
expense_item = ExpenseItem.arel_table
a = expense_item.project(expense_item[Arel.star]).where(expense_item[:vehicle_id].eq(parent.table[:vehicle_id]))
代码尚未完成,因为我不确定如何在Arel中执行后续步骤。老实说,我确信我的做法也不正确。
感谢任何帮助。