首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails 3.如何默认按虚拟属性排序?

Rails 3.如何默认按虚拟属性排序?
EN

Stack Overflow用户
提问于 2012-01-18 02:09:41
回答 2查看 1.2K关注 0票数 1

我的发货有一张发票;发票属于发货。发货具有reference_number属性。

我正在使用activeadmin,并在索引页面中列出了按file_number分类的货件,如下所示……

代码语言:javascript
运行
复制
shipment.rb
default_scope :order => :file_number

我想在索引页中列出按参考号排序的发票,问题是参考号是基于发货量的虚拟属性。

代码语言:javascript
运行
复制
invoice.rb
def reference_number
  if self.shipment.nil?
    a = "no ref"
  else
    self.shipment.file_number
  end
end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-18 03:07:29

代码语言:javascript
运行
复制
default_scope includes(:shipment).order("shipments.file_number")

在这种情况下,显然所有的nils都将被一起排序,这样您可以在视图中为"no ref“字符串添加逻辑,当shipment.blank?或者只是在视图中使用reference_number方法。

票数 1
EN

Stack Overflow用户

发布于 2012-01-18 05:46:30

我可以向你推荐一种奇怪的方法,首先是重造

代码语言:javascript
运行
复制
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

就是这样!,当你填充视图时,你必须包含(排序):

代码语言:javascript
运行
复制
@invoices= Invoice.all.sort
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8899504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档