是否可以在模型上使用类方法来创建同一模型的新实例?
场景是,我希望与外部API交互,在另一个服务上创建一个实例,然后在成功完成后将新的对象引用存储在本地模型中。
例如,我想从控制器调用这样的东西:
MyModel.interact_with_api_function([variables required])
在模型上有一个类似这样的类方法:
def interact_with_api([variables required])
interacts with api, generates object over there, returns result
This.new(identifier: result, ...).save!
end
是否可以在模型上使用类方法来创建同一模型的新实例
是的,你可以做到。事实上,当你做类似MyModel.first
的事情时,这正是发生的事情。first
是一个类方法,它从数据库中获取一行,创建模型的新实例,然后用从该数据库调用中获取的数据填充它。
场景是我想要与外部API交互,在另一个服务上创建一个实例,然后在完成后成功地将新的对象引用存储在本地模型中
如果您认为对数据库的SQL调用类似于对外部API的调用(即,数据库是一个外部服务,就像您的API一样),那么first
方法中的情况与您正在做的情况没有什么不同。
同样,MyModel.create
方法是一个类方法,内置在Rails中,它既创建该模型的新实例,又将其保存到数据库中——这与您正在做的没有什么不同。
所以,我认为这很好。