我有一個相當安靜的API,但我正在努力研究如何幹淨地實現搜索。我希望能夠搜索兩個日期時間之間的所有記錄,日期時間允許相距最多6個小時。在我的控制方法的時刻,我有以下幾點:Rails驗證搜索參數
required_params = [:start_time, :end_time]
if check_required_params(required_params, params) and check_max_time_bound(params, 6.hours)
... rest of controller code here ...
end
check_required_params的是,像這樣的應用方法:
def check_required_params(required_params, params_sent)
required_params.each do |param|
unless has_param(param, params_sent)
unprocessable_entity
return false
end
end
true
end
check_max_time是相當類似。
我知道這是違反在控制器中進行驗證的最佳做法,但我無法看到如何將其添加到模型中。
我喜歡這個問題,但我不明白是什麼阻止你將所有的代碼('unprocessable_entity'除外)移動到模型中。還要注意''check_required_params''可以使用數組交點來簡化很多,不需要循環。 – tokland
@tokland好吧,我可以做到這一點。我想我希望我可以使用內置的Active :: Model驗證。 – Mike