Ruby on Rails集中枚举

19 浏览
0 Comments

Ruby on Rails集中枚举

我有一类物品,比如说:\n

    \n

  • 已售出
  • \n

  • 店内有货
  • \n

  • 即将上架
  • \n

\n每个物品在数据库中的记录如下:\n

    \n

  • item.category = 0 表示已售出
  • \n

  • item.category = 1 表示店内有货
  • \n

  • item.category = 2 表示即将上架
  • \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 %>

0
0 Comments

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"。

0