Есть ли более короткое имя для Rails find_or_initialize_by_this_that_and_theotherthing? - PullRequest
1 голос
/ 09 марта 2010

Я использую активную запись find_or_intialize (похожую на find_or_create) в нескольких местах, что приводит к раздражающе длинным неразрывным именам методов. Например, «find_or_initialize_by_topic_id_and_publish_date_and_publist_id» действительно портит мое форматирование. Я знаю, что с помощью обычного метода поиска я могу предоставить все эти вещи в качестве параметров. Есть ли более читаемая версия этого метода?

1 Ответ

0 голосов
/ 09 марта 2010

Вы можете реализовать отсутствующий метод для анализа имени метода и восстановления длинного из сокращенного:

finit_b_tid_n_pubdte_npubid(....)

Вам просто нужно определить, что означает каждая стенография между подчеркиванием:

def method_missing(id, *args)
  fields_in = id.split(/_/)
  fields_out = []
  fields.each do |f|
    case f
      when "finit"
        fields_out <<= "find_or initialize"
      when "b"
        fields_out <<= "by"
      when "n"
        fields_out <<= "and"
      when.....
         .....
    end 
  end
  send(fields_out.join("_"), args)
end

Я не запускал это, но этого должно быть достаточно, чтобы дать вам идею.

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