Array.wrapが便利な件

好きです。Array.wrap
ActiveSupportでArrayクラスで定義されてます。

1
2
Array.wrap("hoge") #=> ["hoge"]
Array.wrap(["hoge"]) #=> ["hoge"]

うんうん。いい。

下のコードは適当に書いたので動かんかったらごめんなさい。

1
2
3
4
class User < ActiveRecord::Base
  has_one :lover
  has_many :friends
end

ってモデルがあったら

1
2
3
4
5
6
7
8
9
10
  def print_relations(lover_or_friends)
  if lover_or_friends.instance_of?(Lover)
    p lover_or_friends
    else
      lover_or_friends.each do |lover_or_friend|
        p lover_or_friend
      end
    end

  end

って、いちいち判定せずに。

1
2
3
4
5
  def print_relations(lover_or_friends)
    Array.wrap(lover_or_friends).each do |lover_or_friend|
      p lover_or_friend
    end
  end

って、いっそArrayにしてしまって、回すとスッキリ

Comments