2 votes

Initialiser les attributs virtuels

J'ai un IncomingEmail modèle avec un attachments attribut virtuel :

class IncomingEmail < ActiveRecord::Base  
  attr_accessor :attachments
end

Je veux le attachments attribut virtuel à initialiser à [] plutôt que nil pour que je puisse le faire :

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

Sans réglage préalable i.attachments à [] (en d'autres termes, je veux que cet attribut virtuel prenne par défaut la forme d'un tableau vide au lieu de nil )

3voto

Eimantas Points 29052

Utiliser after_initialize rappel

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X