我在模型
中创建了一个问题module Employee
extend ActiveSupport::Concern
included do
def job
job_hash = {
'0': 'A',
'1': 'B',
'2': 'C'
}.freeze
job_hash[:"#{@job}"]
end
end
我有模特
class Company < ActiveRecord::Base
self.table_name = 'Jobs'
include Employee
end
作业表的列类型的值为0,1,2 如何映射哈希(0,1,2)中与列类型相关的值并返回与之关联的字符串值?因此,如果用户类型为1,则返回B
由于
答案 0 :(得分:0)
您可以将#job
方法解耦并像这样使用它(如果我能正确理解您):
module Employee
extend ActiveSupport::Concern
included do
def job
job_mapping[:"#{@job}"]
end
def job_mapping
{
'0' => 'A',
'1' => 'B',
'2' => 'C'
}
end
def job_name
job_mapping[type.to_s]
end
end
end
company = Company.find(some_id)
job_name = company.job_name
在一个不相关的注释中,{{1}实例方法中的某些东西是代码气味,如果可能的话,您可能希望将其提升为常量。