-3

在我的表中,我有 first_name、middle_name 和 last_name 字段。我想按 Aplhabetical 顺序显示 First_name Middle_name Last_name。对于某些记录 first_name 可能为空白,对于某些记录 last_name 可能为空白,对于某些记录 middle_name 可能为空白。如果 first_name 空白需要显示中间名和姓氏,如果 middle_name 空白需要显示名字和姓氏,如果 last_name 空白需要显示名字和中间名。最后我想按字母顺序显示列表。我想如何处理这个问题?

4

1 回答 1

0

在您的情况下可能的解决方案。

您应该检测第一个non blank属性:

class YourModel < ActiveRecord::Base
 def representation
   [first_name, middle_name, last_name].detect{ |r| r.present? }.downcase
 end
end

获取对象:

@objects = YourModel.all

排序对象:

@objects.sort! { |a,b| a.representation <=> b.representation }

方法present?Rails 2.2.1版本开始可用。

http://apidock.com/rails/v2.2.1/Object/present%3F

根据评论中的讨论:present?与 相同!blank?

# File activesupport/lib/active_support/core_ext/object/blank.rb, line 19
def present?
  !blank?
end

blank?是 的别名empty?

def empty?
  all? { |k, v| v && v.empty? && !v.is_a?(String) }
end
于 2012-05-30T10:17:07.587 回答