Инициализировать виртуальные атрибуты - PullRequest
2 голосов
/ 31 мая 2010

У меня есть модель IncomingEmail с виртуальным атрибутом attachments:

class IncomingEmail < ActiveRecord::Base  
  attr_accessor :attachments
end

Я хочу, чтобы виртуальный атрибут attachments был инициализирован как [], а не nil, чтобы я мог сделать:

>> i = IncomingEmail.new
=> #<IncomingEmail id: nil,...)
>> i.attachments << "whatever"

Без первой установки i.attachments в [] (другими словами, я хочу, чтобы этот виртуальный атрибут по умолчанию представлял собой пустой массив, а не nil)

1 Ответ

3 голосов
/ 31 мая 2010

использовать after_initialize обратный вызов

class IncomingEmail < ActiveRecord::Base  
  attr_accessor :attachments
  def after_initialize
    self.attachments ||= [] # just in case the :attachments were passed to .new
  end
end
...