web-dev-qa-db-fra.com

valeurs par défaut attr_accessor

J'utilise Rails et je veux faire en sorte que attr_accessor :politics soit défini par défaut sur false.

Est-ce que quelqu'un sait comment faire cela et est capable de l'expliquer en termes simples pour moi?

49
Vasseurth

Rails a attr_accessor_with_default afin que vous puissiez écrire

class Like
  attr_accessor_with_default :politics,false
end

i = Like.new
i.politics #=> false

et c'est tout

METTRE À JOUR

attr_accessor_with_default est obsolète dans Rails 3.2 .. vous pouvez le faire à la place avec pure Ruby

class Like
  attr_writer :politics

  def politics
    @politics || false
  end
end

i = Like.new
i.politics #=> false
112
Orlando

Vous pouvez utiliser le joyau virtus:

https://github.com/solnic/virtus

Du README:

Virtus vous permet de définir des attributs sur des classes, des modules ou des instances de classe avec des informations facultatives sur les types, la visibilité de la méthode de lecture/écriture et le comportement en matière de contrainte. Il prend en charge de nombreuses contraintes et un mappage avancé d'objets et de collections incorporés.

Il supporte spécifiquement les valeurs par défaut .

0
Thilo

Si vous définissez votre attr_accessor, la valeur par défaut est nil. Vous pouvez y écrire, ce qui le rend !nil 

0
user1340154