47 votes

Comment définir un champ booléen pour une migration de rails

Je souhaite ajouter un champ de valeur booléenne ("is_public") à la table "my_model". Actuellement, je peux utiliser ceci:

 class AddPublicToDream < ActiveRecord::Migration
  def self.up
    add_column :my_model, :is_public, :string
  end

  def self.down
    remove_column :my_model, :is_public, :string
  end

end

Ensuite, je peux attribuer "true" ou "false" à mymodel.is_public dans les contrôleurs.

Puis-je remplacer :string par :boolean pour obtenir le même effet ? Cela économiserait-il de l'espace de base de données par rapport à :string ?

83voto

sevenseacat Points 12086

Oui, vous pouvez utiliser :boolean pour cela, et oui, cela économisera également de l'espace dans la base de données.

23voto

Kleber S. Points 3427

Remplacez l'attribut type par :boolean et exécutez à nouveau rake db:migrate . Vous devriez pouvoir appeler, par exemple :

 Dream.is_public?  # returning true or false depending whether is set.

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