代码之家  ›  专栏  ›  技术社区  ›  Matt Briggs

使用sqlite的rails中的布尔值

  •  9
  • Matt Briggs  · 技术社区  · 16 年前

    我仍然是一个有点不懂铁路的人,但我遇到了一些似乎有点奇怪的事情。我向数据库中的模型添加了一个布尔字段

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

    但是,sqlite3数据库中的值似乎是 't' 'f' user.admin? 如果值为,则返回false “f”

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

    这只是sqlite的一些奇怪问题,还是我没有得到什么?

    2 回复  |  直到 16 年前
        1
  •  13
  •   drizzle    16 年前

    改用这个:

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

    here .

        2
  •  1
  •   Schrockwell    16 年前

    问题可能在于数据库迁移。我不认为:bool是正确的数据类型名称。尝试:改为布尔值,例如。

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