Question

Je suis encore un peu un noob avec des rails, mais je tombe sur quelque chose qui semble un peu étrange. J'ai donc ajouté un champ booléen à un modèle de la base de données.

t.column :admin, :bool, :default => false, :null => false

Cependant, la valeur dans la base de données sqlite3 semble être 't' ou 'f' . C'est bien, mais je m'attendrais quand même à ce que user.admin? renvoie false si la valeur est 'f' . Comme vous pouvez le constater à partir de la session de console suivante, ce n'est pas le cas:

>> user = User.first
=> #<User id: 2, login: "matt", name: "", email: "google.ninja@no-spam.com", crypt
ed_password: "c6740f820b4cbf6e3d88188719f23cd3053a54f0", salt: "5629f5ee09f51543
a7d64dd903b8d9e53aa43a24", created_at: "2009-04-26 23:08:05", updated_at: "2009-
04-26 23:10:38", remember_token: nil, remember_token_expires_at: nil, admin: "t"
>
>> user.admin?
=> true
>> user.admin = false
=> false
>> user.save
=> true
>> user = User.first
=> #<User id: 2, login: "matt", name: "", email: "google.ninja@no-spam.com", crypt
ed_password: "c6740f820b4cbf6e3d88188719f23cd3053a54f0", salt: "5629f5ee09f51543
a7d64dd903b8d9e53aa43a24", created_at: "2009-04-26 23:08:05", updated_at: "2009-
05-06 03:32:23", remember_token: nil, remember_token_expires_at: nil, admin: "f"
>
>> user.admin?
=> true

S'agit-il d'un problème étrange avec sqlite, ou est-ce que je ne reçois rien?

Était-ce utile?

La solution

Utilisez ceci à la place:

t.column :admin, :boolean, :default => false, :null => false

Découvrez pourquoi ici .

Autres conseils

Le problème peut être lié à la migration de la base de données. Je ne pense pas que: bool soit le bon nom de type de données à utiliser. Essayez: booléen à la place, par exemple

t.column :admin, :boolean, :default => false, :null => false
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top