views:

34

answers:

1

I have an IncomingEmail model with an attachments virtual attribute:

class IncomingEmail < ActiveRecord::Base  
  attr_accessor :attachments
end

I want the attachments virtual attribute to be initialized to [] rather than nil so that I can do:

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

Without first setting i.attachments to [] (put another way, I want this virtual attribute to default to an empty array rather than nil)

+2  A: 

use after_initialize callback

class IncomingEmail < ActiveRecord::Base  
  attr_accessor :attachments
  def after_initialize
    self.attachments ||= [] # just in case the :attachments were passed to .new
  end
end
Eimantas
yes, and don't override default initializer in ActiveRecord
allenwei