我有一个模型,它将用户设置存储为 0 或 1(用于真/假)。在我的代码中,我必须这样做:
if @user.settings.show_menu == 1
# do this
end
我怎样才能省略== 1
or == 0
?我试过了:
if @user.settings.show_menu
# do this
end
但它的评估结果不正确,与使用时相同!@user.settings.show_menu
这是漫长的一天,请指导我正确的方向。谢谢!
我有一个模型,它将用户设置存储为 0 或 1(用于真/假)。在我的代码中,我必须这样做:
if @user.settings.show_menu == 1
# do this
end
我怎样才能省略== 1
or == 0
?我试过了:
if @user.settings.show_menu
# do this
end
但它的评估结果不正确,与使用时相同!@user.settings.show_menu
这是漫长的一天,请指导我正确的方向。谢谢!
在 Rails 中有一个boolean
与数据库一起使用的列,它存储为数字并进行相应的转换。通常,这在数据库中被编码为SMALLINT
. 如果您有常客INT
,您可以随时迁移以转换它们。
迁移示例:
change_table :table_name do |t|
t.change(:boolean_column, :boolean)
end
?
在您的应用程序中,标准做法是使用其方法版本来引用布尔标志,例如:
if (@user.settings.show_menu?)
# ...
end
如果没有定义这个方法,你会得到一个异常,可以引导你发现问题。这与让它始终评估为真相比是有利的。