在我的表中,我有 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 空白需要显示名字和中间名。最后我想按字母顺序显示列表。我想如何处理这个问题?
问问题
121 次
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 回答