在我的表中,我有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,如果middle_name空白需要名字和姓氏,如果last_name空白需要显示第一个和中间名。在最后,我想按字母顺序显示列表。我想如何处理这个问题?
答案 0 :(得分: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