Лучший способ вызвать метод с параметром, соответствующим одной из множества строк (Ruby) - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь создать систему, в которой я вызываю метод в отдельном модуле от моего класса, который выполняет запрос SQL на основе строки в этом модуле.Так, например, сейчас я делаю вызов в своем классе WhLoan следующим образом:

Класс WhLoan

qm_code = WhQueryHelper.sql_query(:qm_code)

, который выполняет вызов метода в моемМодуль WhQueryHelper, который содержит строки, которые должны быть выполнены как оператор SQL, в зависимости от того, что было передано, в моем случае это символ.Как это разобраться в моем модуле WhQueryHelper, можно увидеть ниже:

Модуль WhQueryHelper

  QUALIFIED_MORTGAGE_TYPE_QUERY = " 
SELECT
  [LoanNum] AS loan_number,
  [QM_Code] AS qualified_mortgage_type
FROM
  [clg_strategy].[dbo].[QM_Codes] (NOLOCK)
"
def self.sql_query(q_sym)
 conn = Apollo::SqlServer.get_connection(CONFIG_PREFIX)
 qs = self.map_to_query_string(q_sym)
 res = conn.execute(qs).to_a
 conn.close if conn && conn.active?
 res.empty? ? nil : res 
end 

def self.map_to_query_string(q_sym)
 qs = ""
  case q_sym
  when :lock_type
    qs = LOCK_TYPE_QUERY
  when :home_indicators
    qs = HOME_INDICATORS_QUERY
  when :hpm_indicator
    qs = HIGHER_PRICED_MORTGAGE_INDICATOR_QUERY
  when :qm_code
    qs = QUALIFIED_MORTGAGE_TYPE_QUERY
  when :db_eligibility
    qs = APPLICANT_INCOME_PERCENT_OF_MEDIAN_QUERY
  when :corr_tnw_amount
    qs = CORRESPONDENT_TOTAL_NET_WORTH_AMOUNT_QUERY
  else
    raise "not a valid q_sym passed from #{caller[0]}"
  qs  
 end 
end 

TLDR По сути, сейчас я простопередать символ методу в отдельном модуле, где этот символ затем проходит через оператор case, чтобы увидеть, с какой строкой в ​​этом модуле он соотносится, и затем я запускаю эту строку как оператор SQL.Как можно улучшить этот жизненный цикл, чтобы в моем классе WhLoan можно было создать множество отдельных переменных, которые могут вызывать модуль WhQueryHelper для получения правильного возвращаемого значения оператора SQL?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...