Я использую рубин 1.9.2отрефакторит метод с блоком, который содержит нескольких блоков самой
У меня есть метод класса с именем поиск, который принимает блок
например
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 и имеет простой метод один строки для каждого, если/конец заявления
например это выглядело бы примерно так:
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 на самом деле не возвращаются и не оцениваются в методе поиска, но я не уверен, как это сделать.
Где указаны критерии1 и критерии2? – scragz
критерии1 и критерии2 на самом деле не являются критическими. они могут быть любыми (например, если Time.new.year> 2010). – user141146
На самом деле я не знаю, что делать c1_method и c2_method. Они возвращают множество объектов, которые затем необходимо объединить? Являются ли критерии взаимоисключающими? – knowtheory