【发布时间】:2019-01-28 01:50:48
【问题描述】:
我正在将 .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 为例。我真的应该打电话给什么?
我想到了两种可能性。实例方法:
output_log << Invoice.new.populate_from_row(row)
或者,一个类方法:
output_log << Invoice.create_from_row(row)
(要么返回一个记录成功或失败的字符串。)
两者都可以,但哪个更有意义?是否有一些设计原则或模式可以告诉我如何选择?
【问题讨论】:
标签: ruby-on-rails oop design-patterns methods import-csv