.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
データの検証、レコードの作成、およびエラー報告の複雑さはすべて、自分の方法をごちゃごちゃにするのではなく、別の方法に隠しておきたいと考えていますimport
。some_method_name
例として呼んでいます。私は本当に何を呼ぶべきですか?
2 つの可能性が思い浮かびます。インスタンスメソッド:
output_log << Invoice.new.populate_from_row(row)
または、クラス メソッド:
output_log << Invoice.create_from_row(row)
(どちらも、成功または失敗をログに記録する文字列を返します。)
どちらも機能しますが、どちらがより理にかなっていますか? 選択方法を教えてくれるデザインの原則やパターンはありますか?