私はここにこの小さなものを持っています:
def get_articles
@articles = []
Doc.column_names.each do |a|
if a.match(/^article/)
@articles << a
end
end
end
しかし、それは多くの望ましくない結果を返します。特定の文字列 (たとえば、) で終わる結果を破棄するにはどうすればよい_body
ですか?
乾杯!
私はここにこの小さなものを持っています:
def get_articles
@articles = []
Doc.column_names.each do |a|
if a.match(/^article/)
@articles << a
end
end
end
しかし、それは多くの望ましくない結果を返します。特定の文字列 (たとえば、) で終わる結果を破棄するにはどうすればよい_body
ですか?
乾杯!
どうですか:
if a.match(/^article/) and !a.match(/_body$/)
ちなみに、メソッドは次のように(よりコンパクトに)書き直すことができます。
def get_articles
@articles = Doc.column_names.select { |a| a.match(/^article/) && !a.match(/_body$/) }
end
デュアルマッチをゼロ幅のネガティブルックビハインドアサーションを含むシングルマッチに置き換えることもできますが、大多数の人にとっては読みにくくなっています(ただし、クイックアンドダーティテストでは約2倍の速さです)。
def get_articles
@articles = Doc.column_names.select { |a| a.match(/^article.*(?<!_body)$/) }
end