-1
=> [#<WelcomeCall id: 16, call_at: "2013-11-06 12:00:00">,
    #<WelcomeCall id: 17, call_at: "2013-11-06 13:00:00">,
    #<WelcomeCall id: 18, call_at: "2013-11-06 17:00:00">,
    #<WelcomeCall id: 19, call_at: "2013-11-06 14:00:00">]

これらすべてのWelcomeCallオブジェクトから時間の配列を取得したいと思います。

=> [12, 13, 17, 14]

WelcomeCall は Rails モデルです。

私はそのために使用しました:

  def self.scheduled_hours date
    by_date(date).map do |wc|
      wc.call_at.hour
    end
  end

しかし、多分もっと良い方法がありますか?

4

4 に答える 4

3

を使用しますmap

次のようなことを試してください:

new_array = old_array.map{ |welcome_call| welcome_call.call_at.strftime('%H').to_i }

あなたのwelcome_call.call_atが日付であると仮定します。Date オブジェクトでない場合は、次を試してください。

new_array = old_array.map do |welcome_call|
    date = Date.parse(welcome_call.call_at)
    date.strftime('%H').to_i
end
于 2013-11-07T10:11:48.127 に答える
0

を使用して配列を反復処理し、call_at datetime オブジェクトを解析できますstrftime('%H').to_i

于 2013-11-07T09:59:15.910 に答える
0
welcome_calls.map {|w| w.hour}

Date を String に解析してから String を Fixnum に再解析するのは、私が思うほど速くはありません。

于 2013-11-07T10:13:46.203 に答える