映射关注表列的哈希键

时间:2017-02-21 21:06:40

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我在模型

中创建了一个问题
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

由于

1 个答案:

答案 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}实例方法中的某些东西是代码气味,如果可能的话,您可能希望将其提升为常量。