使用 table 列映射关注哈希键
map concern hash keys with the table column
我在模型中创建了一个问题
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
Jobs table 具有值为 0、1、2 的列类型
我如何映射与列类型有关的散列 (0,1,2) 中的值以及与之关联的 return 字符串值?所以如果用户类型是 1 那么 return B
谢谢
您可以解耦 #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
顺便说一句,freeze
在实例方法中使用某些东西是一种代码味道,如果可能,您可能希望将其提升为常量。
我在模型中创建了一个问题
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
Jobs table 具有值为 0、1、2 的列类型 我如何映射与列类型有关的散列 (0,1,2) 中的值以及与之关联的 return 字符串值?所以如果用户类型是 1 那么 return B
谢谢
您可以解耦 #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
顺便说一句,freeze
在实例方法中使用某些东西是一种代码味道,如果可能,您可能希望将其提升为常量。