1
私はブロック例えばリファクタリング私はRubyの1.9.2に</p> <p>を使用していた複数のブロックを含むブロックと方法自体
をとり、検索というクラスメソッドを持っています私は何をしたいのですがMyClass.searchメソッドをリファクタリングし、それぞれのif/end文
例えばためのシンプルな1行のメソッドを持っている
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
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で返されている "ブロック"のように見えますが、実際には返されず、検索メソッドで評価されていませんが、どうすればよいか分かりません。
criteria1とcriteria2はどこに定義されていますか? – scragz
criteria1とcriteria2は本当に重要ではありません。何でもかまいません(たとえば、Time.new.year> 2010の場合)。 – user141146
実際、私はc1_methodとc2_methodが意図しているものは不明です。彼らはマージする必要があるオブジェクトのセットを返しますか?基準は相互に排他的ですか? – knowtheory