Ruby on rails 如何在保存到数据库之前设置布尔值?

Ruby on rails 如何在保存到数据库之前设置布尔值?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,假设我有一个项目模型,它有一个布尔值onshelf 我想通过执行类似于self.onshelf=true的操作,将onshelf值显式设置为true。但我在《敏捷Web开发》一书中了解到,不同的数据库存储布尔值的方式完全不同,我担心我的实践可能会在将来破坏我的应用程序 所以我想知道,如果我设置布尔值,比如self.onshelf=true,Rails会正确地执行类型转换吗 我知道切换方法也可以这样做,但我不喜欢它立即保存结果。我想先设置每个属性,然后在保存后让决定 谢谢 ActiveRecord

假设我有一个
项目
模型,它有一个布尔值
onshelf

我想通过执行类似于
self.onshelf=true
的操作,将
onshelf
值显式设置为
true
。但我在《敏捷Web开发》一书中了解到,不同的数据库存储布尔值的方式完全不同,我担心我的实践可能会在将来破坏我的应用程序

所以我想知道,如果我设置布尔值,比如
self.onshelf=true
,Rails会正确地执行类型转换吗

我知道
切换方法也可以这样做,但我不喜欢它立即保存结果。我想先设置每个属性,然后在保存后让
决定


谢谢

ActiveRecord应将ruby布尔值转换为相应数据库中最接近的值。

ActiveRecord(及其数据库驱动程序)将以最适合您使用的特定数据库的方式存储布尔值。

是否可能将
false
转换为
null
,而不是
0
?(假设一些DB将
0
视为
false
)谢谢!但这给了我一些担忧。似乎ActiveRecord将
false
解释为
null
;也许这是驱动程序中的一个错误。这绝对出乎意料。如果您有权访问数据库迁移,您可能可以将该列设置为“NOTNULL default[数据库中的任何错误]。这实际上是我通常自己做的。