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[数据库中的任何错误]。这实际上是我通常自己做的。