Я использую Ruby 1.9.2
У меня есть метод класса с именем search, который занимает блок
, например
class MyClass
def self.search do
if criteria1
keywords "abcde", fields: :c1 do
minimum_match(1)
end
end
if criteria2
keywords "defghi", fields: :c2 do
minimum_match(1)
end
end
end
end
То, что я хотел бы сделать, это провести рефакторинг метода MyClass.search и иметь простой однострочный метод для каждого оператора if / end
например. это будет выглядеть примерно так:
class MyClass
def self.search do
c1_method
c2_method
end
def self.c1_method
if criteria1
return keywords "abcde", fields: :c1 do
minimum_match(1)
end
end
end
def self.c2_method
if criteria2
return keywords "defghi", fields: :c2 do
minimum_match(1)
end
end
end
end
Но рефакторинг, который я показываю выше, не совсем работает. Похоже, что «блоки», которые я возвращаю в c1_method и c2_method, в действительности не возвращаются и не оцениваются в методе поиска, но я не уверен, как это сделать.