我有一个模型,用户将设置存储为0或1(对于true / false)。在我的代码中,我必须这样做:
if @user.settings.show_menu == 1
# do this
end
如何忽略== 1
或== 0
?我试过了:
if @user.settings.show_menu
# do this
end
但它并没有评估为真,与使用!@user.settings.show_menu
这是漫长的一天,请指导我正确的方向。谢谢!
答案 0 :(得分:4)
在Rails中,有一个boolean
列用于数据库,该数据库存储为数字并相应地进行转换。通常,它在数据库中编码为SMALLINT
。如果您有常规INT
,则可以随时迁移以转换它们。
示例迁移:
change_table :table_name do |t|
t.change(:boolean_column, :boolean)
end
在您的应用程序中,标准做法是使用?
方法版本引用布尔标志,如:
if (@user.settings.show_menu?)
# ...
end
如果未定义此方法,您将获得一个异常,可以引导您发现问题。这与将其始终评估为真实相比是有利的。