如何创建一个动作控制器助手类以及如何在控制器动作中访问它?

时间:2014-12-04 11:42:30

标签: ruby-on-rails ruby helpers

嗨,所有新手问题。

我正在创建一个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

我可以使用spawnling gem在向用户显示结果后执行额外的操作。但我只是好奇我是否可以用帮手或其他铁轨来做这件事。

1 个答案:

答案 0 :(得分:0)

虽然有些情况下使用后台处理是有意义的。这不是其中之一。

我假设向用户显示结果&#39;表示根据从api中提取的数据渲染一些模板。

实际上,将外部API移入后台可能是一个好主意,但这需要更改流程。至于更新db记录,将其移至后台通常不是一个好主意。

话虽如此,我不会在控制器中进行更新,我会将其移入模型或“变异”中。类:

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