【发布时间】:2011-08-26 04:02:05
【问题描述】:
我试图在 SQLite3 表中插入一个假布尔值,但它总是插入一个真值。
这是我的迁移:
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.column :name, :string
t.column :active, :boolean, :default => false, :null => false
end
end
def self.down
drop_table :resources
end
end
当我尝试使用 rails 插入时,它会产生以下 SQL:
INSERT INTO "users" ("name", "active") VALUES ('test', 'f')
SQLite 将 'f' 视为 true,因此它将 true 插入到我的数据库中。我希望它生成的查询是:
INSERT INTO "users" ("name", "active") VALUES ('test', false)
我做错了什么?
导轨:3.0.7
sqlite3 宝石:1.3.3
【问题讨论】:
-
你的 Rails 代码用 'f' 生成 SQL 是什么?
-
生成的 HTML 如下所示:
-
控制器是一个简单的 REST 创建。
-
即使我执行如下查询:User.find(:all, :conditions => { :active => false}) sql 看起来像这样:SELECT "users".* FROM "users " WHERE "用户"."active" = 'f'
标签: ruby-on-rails ruby-on-rails-3 sqlite rails-activerecord