Rails:我可以在模型的类方法中创建和保存对象实例吗



是否可以在模型上使用类方法来创建同一模型的新实例?

场景是,我希望与外部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中,它既创建该模型的新实例,又将其保存到数据库中——这与您正在做的没有什么不同。

所以,我认为这很好。

最新更新