私のテーブルには、first_name、middle_name、および last_name フィールドがあります。アルファベット順で First_name Middle_name Last_name のように表示したい。一部のレコードでは first_name が空白、一部のレコードでは last_name が空白、一部のレコードでは middle_name が空白の場合があります。first_name が空白の場合は middle_name と last_name を表示する必要があります。middle_name が空白の場合は名と姓が必要です。last_name が空白の場合は名とミドルネームを表示する必要があります。最後に、リストをアルファベット順に表示したいと思います。この問題にどのようにアプローチしたいですか?
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 に答える