我试图找出将模型属性映射到外部服务中的一组值的最佳方法,作为我们正在使用它们的集成的一部分。
例如,假设我们的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
。
我知道我可以将其存储在txt
或csv
文件中并执行File.open
并遍历每一行并检查值是否匹配。但这并不是非常有效,特别是如果有很多可能的值。
关于如何以最有效的方式完成这种映射的想法?
答案 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
来访问此映射。