2

仮想属性を持つIncomingEmailモデルがあります:attachments

class IncomingEmail < ActiveRecord::Base  
  attr_accessor :attachments
end

attachments仮想属性を初期化するの[]ではなく、次のように初期化する必要がありますnil

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

最初に設定せずi.attachments[](別の言い方をすれば、この仮想属性をデフォルトではなく空の配列に設定したいnil

4

1 に答える 1

3

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
于 2010-05-31T18:58:16.910 に答える