我有一个将用户设置存储为 0 或 1(表示真/假)的模型。在我的代码中,我必须这样做:
if @user.settings.show_menu == 1
# do this
end
如何省略== 1
或== 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
如果未定义此方法,则会出现异常,该异常可能导致您发现问题。这与始终将其评估为真实相比是有利的。