Domanda

Sono ancora un po 'rumoroso con le rotaie, ma sto attraversando qualcosa che sembra un po' strano. Ho quindi aggiunto un campo booleano a un modello nel database

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

Tuttavia, il valore nel database sqlite3 sembra essere 't' o 'f' . Va bene, ma mi aspetterei comunque che user.admin? restituisca false se il valore è 'f' . Come puoi vedere dalla seguente sessione della console, non è così:

>> 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

È solo uno strano problema con sqlite o non sto ottenendo qualcosa?

È stato utile?

Soluzione

Usa questo invece:

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

Leggi perché qui .

Altri suggerimenti

Il problema potrebbe riguardare la migrazione del database. Non credo che: bool sia il nome del tipo di dati giusto da usare. Prova: booleano invece, ad esempio

t.column :admin, :boolean, :default => false, :null => false
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top