sql – Rails数据库布尔值
发布时间:2020-12-12 06:57:40 所属栏目:MsSql教程 来源:网络整理
导读:代码第一: create_table :users do |t| ... t.boolean :is_active,:default = true ...end 现在,这里是我的问题 – 我正在创建一个耙子任务来导入大量的记录(10,000)。我已经进行了广泛的测试和基准测试,并确定执行此任务的最快和最有效的方式是创建一个巨
代码第一:
create_table :users do |t| ... t.boolean :is_active,:default => true ... end 现在,这里是我的问题 – 我正在创建一个耙子任务来导入大量的记录(10,000)。我已经进行了广泛的测试和基准测试,并确定执行此任务的最快和最有效的方式是创建一个巨大的原始SQL语句。 (我正在从CSV读取数据)。举个例子: inserts = Array.new FasterCSV.foreach(...) do |row| inserts.push "(row[0],row[1]...)" end User.connection.execute "INSERT INTO users (...) VALUES #{inserts.join(",")}" 一切都很好整个过程以(字面)秒为单位,而不是使用ActiveRecord的1.5小时。但是,我的问题在于布尔型字段。我在本地开发SQLite,但MySQL在生产。当使用ActiveRecord时,Rails确定在“布尔”字段中放置的内容(因为几乎所有数据库都不同)。我正在编写自定义SQL,我想知道是否有办法可以做一些像… INSERT INTO users(...,is_active,...) VALUES (...,ActiveRecord::Base.connection.boolean.true,...) …正确返回数据库特定的布尔值。 任何回答“只使用ActiveRecord”的人都会被低估。在这种情况下根本不可行。我也不愿意使用tinyint(1)字段,使用1或0。 总之,is_active的值需要根据当前的数据库连接进行更改… 这是甚么可能吗? 解决方法我相信你可能正在寻找ActiveRecord :: Base.connection.quoted_true这将以引号返回原生布尔值。 SQL Server或MySQL的“1”,PostgreSQL或SQLite的“t” (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |