在Rails中检查和验证非模型参数的位置

时间:2011-03-17 09:37:45

标签: ruby-on-rails validation parameters

在Ruby On Rails中,您在哪里检查非模型属性的URL参数(如page,per_page,sort_mode)?在控制器或模型中?

例如,在进行更复杂的数据库查询时,您是否会检查参数并在控制器中设置默认值,然后执行MyModel.search(page, per_page, order, sort_mode, query),或者您可以在模型中设置验证并通过非操纵参数MyModel.search(params)

您如何将该参数报告回视图?例如,sort_mode参数应该在视图上为排序方向生成一个小箭头。你检查并清理params散列并从params获取视图中的数据,还是使用自己的实例变量?

1 个答案:

答案 0 :(得分:7)

我倾向于对控制器中的params进行消毒。

class ApplicationController < ActionController::Base
  before_filter :sanitise_params

  protected

  def sanitise_params
    # tidy up
    # set defaults
  end
end

模型声明其界面的良好实践,并由控制器以正确的方式与它们对话。这样你就可以清楚地分离各层。

查看帮助程序可以帮助查看视图。以下是some examples,它们是ActionPack ActionView的一部分。您可以将自己的内容放在app/helpers