0

.csv ファイルを Ruby on Rails アプリにインポートする作業を行っています。インポーターは、ファイルの各行から新しいデータベース レコードを作成します。

class Invoice < ApplicationRecord

  def self.import(file)
    output_log = []
    CSV.foreach(file.path) do |row|
      output_log << some_method_name(row)
    end
    return output_log
  end

end

データの検証、レコードの作成、およびエラー報告の複雑さはすべて、自分の方法をごちゃごちゃにするのではなく、別の方法に隠しておきたいと考えていますimportsome_method_name例として呼んでいます。私は本当に何を呼ぶべきですか?

2 つの可能性が思い浮かびます。インスタンスメソッド:

output_log << Invoice.new.populate_from_row(row)

または、クラス メソッド:

output_log << Invoice.create_from_row(row)

(どちらも、成功または失敗をログに記録する文字列を返します。)

どちらも機能しますが、どちらがより理にかなっていますか? 選択方法を教えてくれるデザインの原則やパターンはありますか?

4

1 に答える 1