嗨,都是新手问题。
我正在创建一个 rails 应用程序,在向用户显示结果后,我需要在后台执行一些其他操作来更新数据库。
(对不起,我不擅长解释事情,请参阅我的示例代码以了解情况)
在我的控制器的操作中,我正在使用第三方 api 从远程服务器获取数据。向用户显示获取的数据后,我想使用有关获取数据的自定义数据更新数据库表。
class MyController < ApplicationController
def SomeAction
#some logic
@result = FetchDataFromApi#Using third party api to fetch huge data
#show result to user
#after showing i need to do following operations elsewhere (controller helper)
#based on some fetched result i want to update my table
myId = @result.id
dataObj = MyModel.find(myId)
info = @result.information.gsub(',',' ') #some string operation
dataObj.update_attributes(:info, info)
end
end
我可以在向用户显示结果后使用 gem spawnling
执行额外的操作。但我只是好奇我是否可以用助手或其他轨道的东西来做到这一点。
虽然在某些情况下使用后台处理是有意义的。这不是其中之一。
我假设"向用户显示结果"意味着根据从 API 获取的数据呈现一些模板。
实际上,将访问外部 API 移动到后台可能是个好主意,但这需要更改流程。至于更新数据库记录,将其移动到后台通常不是一个好主意。
话虽如此,我不会在控制器中进行更新,我会将其移动到模型或"突变"类中:
class Model
def self.update_from_api
res = API.fetch ...
object = find res.id
object.update_from_api! res
res
end
def update_from_api(api_data)
update_attributes! info: api_data.gsub(....)
end
end