Ruby on Rails集中枚举
Ruby on Rails集中枚举
我有一类物品,比如说:\n
- \n
- 已售出
- 店内有货
- 即将上架
\n
\n
\n
\n每个物品在数据库中的记录如下:\n
- \n
- item.category = 0 表示已售出
- item.category = 1 表示店内有货
- item.category = 2 表示即将上架
\n
\n
\n
\n今天我做了如下操作:\n<% if item.category = 0 %>已售出<% end %>\n<% if item.category = 1 %>店内有货<% end %>\n<% if item.category = 2 %>即将上架<% end %>\n
\n有没有一种方法可以将这个枚举集中在我的整个应用程序中,以便在任何页面都可以像这样使用:\n
<% if SOLD %>已售出<% end %>
Ruby on Rails中心化ENUM的问题是由于在Rails 3.2版本之后,所有的辅助方法都可以在所有的控制器和视图中使用。这样一来,我们可以将ENUM放在一个帮助类中,例如application_helper.rb,放在app文件夹下的helpers文件夹中。
解决方法是将下面的代码添加到application_helper.rb文件中:
CATEGORY = { 0 => "Sold", 1 => "in Shop", 2 => "comming soon" }.freeze def get_category(arg) CATEGORY[arg] end
这样,在任何视图中都可以使用`get_category(0)`来返回"Sold"。