1

現在、私はいくつかのクラスを持っており、それぞれが異なるサイトを扱っています。それらはすべてcrawl_item()メソッドを持っているという意味で、同じタイプのように動作します。

class CrawlA
  def crawl_item
    ...
    A.create()
  end
end

class CrawlB
  def crawl_item
    B.create()
  end
end

crawl_item methodsここで、これらのいずれかを呼び出すときに1つのモデル検証例外をキャッチし、同じレスキューアクションを実行したいと思います。これを実装するための良い方法は何でしょうか?

4

1 に答える 1

3

DRYを維持するために、従来のミックスイン構造(モジュール+クラスインクルード)を使用してラッパーを作成できます。

module CrawlValidator
  def with_validations
    begin
      yield
    rescue => exc
      ...
    end
  end
end

class CrawlA
  include CrawlValidator

  def crawl_item
    with_validations { A.create }
  end
end
于 2012-08-01T08:15:48.847 に答える