2017-02-21 12 views
0

Я создал беспокойство в моделикарт относятся к хэш-ключи с колонкой таблицы

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 Как могут i сопоставить значения из хеша (0,1,2), относящиеся к типу столбца, и вернуть связанное с ним значение строки? поэтому, если тип пользователя 1, а затем вернуть Аргументы B

Благодарности

+0

Этот вопрос не имеет никакого смысла - что вы пытаетесь добиться и, что еще важнее, почему? – max

ответ

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 

Об одном несвязанное примечание, freeze Что-то, что находится в методе экземпляра, является запахом кода, вы, вероятно, захотите продвинуть его к константе, если это возможно.

+0

Спасибо @ Энтони. Если я хочу создать метод для получения job_name, как я могу сделать это в модели или я могу сделать это непосредственно в контроллере, тогда сохраните результат в переменной экземпляра и вызовите JSON? – User7354632781

+0

Вы можете сделать это в концерне или модели, см. Новое редактирование. – Anthony

+0

Я создал метод, но продолжаю получать job_name null – User7354632781

Смежные вопросы