Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4 SQLite错误?数值(整数、浮点、十进制)0在'上作为nil传递;更新';_Ruby On Rails_Sqlite_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails 4 SQLite错误?数值(整数、浮点、十进制)0在'上作为nil传递;更新';

Ruby on rails Rails 4 SQLite错误?数值(整数、浮点、十进制)0在'上作为nil传递;更新';,ruby-on-rails,sqlite,ruby-on-rails-4,Ruby On Rails,Sqlite,Ruby On Rails 4,在使用SQLite的Rails4中,我遇到了一些奇怪的行为 每当我尝试在数字(整数、浮点、十进制)列中存储零时: update\u columns(my\u column:0)按预期在数据库中存储0 update(my_列:0)在数据库中存储一个nil,这不是我所期望的 无论是传递数字(0或0.0)还是字符串('0'或'0.0'),在所有情况下都是如此,并且对此列禁用验证 控制台中回显的SQL代码确认Rails在第一种情况下生成0(或0.0或'0'或'0.0')作为更新值,在第二种情况下生成

在使用SQLite的Rails4中,我遇到了一些奇怪的行为

每当我尝试在数字(整数、浮点、十进制)列中存储零时:

  • update\u columns(my\u column:0)
    按预期在数据库中存储
    0
  • update(my_列:0)
    在数据库中存储一个
    nil
    ,这不是我所期望的
无论是传递数字(
0
0.0
)还是字符串(
'0'
'0.0'
),在所有情况下都是如此,并且对此列禁用验证

控制台中回显的SQL代码确认Rails在第一种情况下生成
0
(或
0.0
'0'
'0.0'
)作为更新值,在第二种情况下生成
nil
作为更新值


这是Rails中的一个bug吗?

您有没有可能在适当的位置安装一个before过滤器(或属性规范化器)?update_columns执行直接SQL更新并跳过回调。更新没有。也许你已经准备好将0变成nil,类似于将空白字符串变成nil

现在是我把这个项目切换到postgreSQL的时候了……你们有没有可能在适当的地方安装一个before过滤器(或属性规范化器)?update_columns执行直接SQL更新并跳过回调。更新没有。也许你已经准备好了将0变为nil的方法,类似于将空白字符串变为nil?我想在发布这个问题之前我已经完全检查了这种可能性,但我一直在将0变为nil——不久前我已经忘记了调试工作的遗留问题。然后我被一个Rails bug的想法所困扰<代码>:-|谢谢你的轻推!回答这个问题,我会接受的。