我的发货有一张发票;发票属于发货。发货具有reference_number属性。
我正在使用activeadmin,并在索引页面中列出了按file_number分类的货件,如下所示……
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
发布于 2012-01-18 03:07:29
default_scope includes(:shipment).order("shipments.file_number")
在这种情况下,显然所有的nils都将被一起排序,这样您可以在视图中为"no ref“字符串添加逻辑,当shipment.blank?或者只是在视图中使用reference_number方法。
发布于 2012-01-18 05:46:30
我可以向你推荐一种奇怪的方法,首先是重造
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
https://stackoverflow.com/questions/8899504
复制相似问题