Ruby on rails 轨道3。如何按虚拟属性进行默认排序?
我有一张发票;发票属于发货。 装运具有“参考号”属性 我正在使用activeadmin,我在索引页中列出了按文件编号排序的装运,如下所示Ruby on rails 轨道3。如何按虚拟属性进行默认排序?,ruby-on-rails,ruby,activerecord,activeadmin,Ruby On Rails,Ruby,Activerecord,Activeadmin,我有一张发票;发票属于发货。 装运具有“参考号”属性 我正在使用activeadmin,我在索引页中列出了按文件编号排序的装运,如下所示 shipment.rb default_scope :order => :file_number 我想在索引页中列出按参考号排序的发票,问题是参考号是基于装运的虚拟属性 invoice.rb def reference_number if self.shipment.nil? a = "no ref" else self.shi
shipment.rb
default_scope :order => :file_number
我想在索引页中列出按参考号排序的发票,问题是参考号是基于装运的虚拟属性
invoice.rb
def reference_number
if self.shipment.nil?
a = "no ref"
else
self.shipment.file_number
end
end
在这种情况下,显然所有的NIL都将一起订购,因此您可以在Shipping.blank时在视图中为“no ref”字符串添加逻辑?或者在视图中使用reference\u number方法。我可以向您推荐一种奇怪的方法,首先是重构
invoice.rb
def reference_number
self.shipment.nil? ? "no ref" : self.shipment.file_number
end
def <=> (obj2)
self.reference_number <=> obj2.reference_number
end
def < (obj2)
self.reference_number < obj2.reference_number
end
def > (obj2)
self.reference_number > obj2.reference_number
end
def == (obj2)
self.reference_number = obj2.reference_number
end
你可以在应用程序中排序。如果我这样做
链接到invoice.reference\u number,admin\u invoice\u path(invoice)
我没有得到这样的列:invoice.reference\u number error添加此meod后是否重新启动了服务器?当你的应用程序已经在开发中投入生产,而问题出现在另一个地方时,这一点很重要。。。
invoice.rb
def reference_number
self.shipment.nil? ? "no ref" : self.shipment.file_number
end
def <=> (obj2)
self.reference_number <=> obj2.reference_number
end
def < (obj2)
self.reference_number < obj2.reference_number
end
def > (obj2)
self.reference_number > obj2.reference_number
end
def == (obj2)
self.reference_number = obj2.reference_number
end
@invoices= Invoice.all.sort