Rails 将整数计算为布尔值



我有一个将用户设置存储为 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

如果未定义此方法,则会出现异常,该异常可能导致您发现问题。这与始终将其评估为真实相比是有利的。

最新更新