Rails:内部转发请求

时间:2014-09-15 21:36:18

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个应用程序通过POST请求从气象站输入天气。 问题是固件有很多怪癖,我想把它们分开来适应"适配器"控制器可以规范化参数并转发请求。

怪癖包括使用缩短的float,属性标识符和url来节省内存/带宽。

示例:

POST /m -> ArdiunoController#create -> (normalize) -> ObservationController#create

为什么?" kosher"如果控制器能够处理不同固件的所有奇怪现象,它们将会失控。 模型不应该与输入规范化有关。

1 个答案:

答案 0 :(得分:0)

这看起来像是您想要如何组织代码的问题。

您不必限制自己使用基于ActiveRecord的模型,您可以创建自己的模型来处理数据规范化。

class Normalizer
  def self.normalize_params(params)
    case params[:firmware_version]
    when 'ardiuno'
      # do stuff
    when 'something_else'
      # do something else
    end
    return params
  end
end

在您的控制器中,您可以这样称呼它:

normalized_params = Normalizer.normalize_params(params)

这样你的逻辑就隐藏了,一切都应该有效。无需为每个固件创建单独的控制器,只要固件版本在params中,它们都可以转到同一个控制器。