-3

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

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 に答える