Rails以最有效的方式将属性映射到外部源值

时间:2015-12-27 20:23:05

标签: ruby-on-rails

我试图找出将模型属性映射到外部服务中的一组值的最佳方法,作为我们正在使用它们的集成的一部分。

例如,假设我们的User模型具有education_level属性,我们的系统中存储的值为0,1,2,3,4,5,它们等同于到:

0  8th grade education
1  high school education
2  associate's degree
3  some college
4  bachelor's degree
5  masters or phd degree

在他们的系统中,他们说343,344,355,356,363和373.所以我想要某种映射表,如:

0  343
1  344
2  355
3  356
4  363
5  373

当我对外部系统POST时,如果用户为344存储了1个,我们会发送high school education

我知道我可以将其存储在txtcsv文件中并执行File.open并遍历每一行并检查值是否匹配。但这并不是非常有效,特别是如果有很多可能的值。

关于如何以最有效的方式完成这种映射的想法?

1 个答案:

答案 0 :(得分:1)

在这种情况下你应该使用Hash

class User
  SERVICE_EDUCATION_LEVELS_MAP = {
    0 => 343,
    1 => 344,
    2 => 355,
    3 => 356,
    4 => 363,
    5 => 373
  }.freeze

  def service_education_level
    SERVICE_EDUCATION_LEVELS_MAP[education_level]
  end
...
end

现在,您可以通过调用#service_education_level实例上的User来访问此映射。