我有一个应用程序通过POST请求从气象站输入天气。 问题是固件有很多怪癖,我想把它们分开来适应"适配器"控制器可以规范化参数并转发请求。
怪癖包括使用缩短的float,属性标识符和url来节省内存/带宽。
示例:
POST /m -> ArdiunoController#create -> (normalize) -> ObservationController#create
为什么?" kosher"如果控制器能够处理不同固件的所有奇怪现象,它们将会失控。 模型不应该与输入规范化有关。
答案 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中,它们都可以转到同一个控制器。