今天我和同事谈话了。我们讨论了服务中的数据库交互如果需要在创建之前完成一些复杂的逻辑(操作),那么在服务中创建一些表行是一个好习惯,如:
class UserService
def create(some_params)
some_attributes = ...
# some logic before creation
...
User.create(some_attributes)
end
end
他说服务应该只在创建之前准备数据,并且应该在这样的模型中调用:
class User < ActiveRecord::Base
def self.prepare_and_create(params)
result = UserPreparationService.new(params).prepare
create(result)
end
end
您能否回答一下哪种方式正确或更好?