当我尝试在 Rails 中检查布尔值时遇到问题。早些时候,我的条件用于检查布尔值是否为 1 或 0,这很有效。但是最近,这不再起作用了。
当我在 mysql 级别检查它们时,布尔值存储为 tinyint(1),值为 1 和 0。但是当我在 rails development.log 中打印这些值时,它们分别显示为 true 和 false。
Earlier comparison logic
is_admin == 1
当我现在检查真假而不是 1 和 0(因为最近的问题)时,一切正常。我不知道为什么这在我之前没有失败。
Current comparison logic
is_admin == true
我也不是 100% 相信布尔列的比较应该在 Rails 的上下文中始终与 true 或 false 进行比较,或者它应该针对 1 和 0。
任何人都可以请对此有所了解。
我在此过程中确实意识到的一件事是,早期的比较是在 1(整数)和 true(实际布尔值)之间进行的比较结果为 false。我现在可以理解这一点,但我仍然无法理解这种逻辑在早些时候对我来说是如何工作的。
任何见解都会对此有所帮助。请推荐在 Rails 中进行此类检查的最佳实践。谢谢你。