如何在ActiveRecord #create calls中表示SQL值为NULL?

时间:2017-02-09 01:02:00

标签: sql ruby ruby-on-rails-3

由于seeds.rb在Ruby中,我猜测如果我想要效果

insert into foo values (hoo: "ioo", koo: null);

我应该做点像

Foo.create(hoo: "ioo", koo: nil)

在这种情况下,Ruby值nil是否映射到SQL值null?我知道

Foo.create(hoo: "ioo")

将创建koo NULL的行,但在这种情况下我的seeds.rb行是在快速n-dirty SQL查询中连接在一起的字符串,所以简单地跳过具有空值的列可能比让节点模块better-sqlite3停止吐出版本不匹配消息需要更多精力。我想我可以耙掉这些种子并测试我的nil - > NULL假设,而不是在这里询问,但我已经足够新了,因为我对于破坏事物我很偏执

2 个答案:

答案 0 :(得分:1)

是的,Foo.create(hoo: "ioo", koo: nil)会将koo列设置为NULL。

通过运行seeds.rb并查看创建的内容,您无法真正破解任何内容。如果它不是您想要的,请将其删除并重试!

答案 1 :(得分:0)

是的,我所知道的所有SQL宝石都将Ruby nil转换为SQL NULL