假设我的观点需要传递一些绝对与模型无关的参数。清理控制器中输入的最佳方法是什么?
例如
- 验证在字符串数组中包含参数:display_type
参数,用于设置搜索结果是显示在地图上还是列表中,作为卡片等,但只定义了一些并且可用
- 验证某些参数的类型/数值(例如,params [:page]应为整数或回退到默认页面0
目前我正在使用
之类的东西def validate_xxx_param
if ['map', 'card'].include?(params[:display_type))
...
else
...
end
end
但是,有更清洁/更好的OOP方式吗?
答案 0 :(得分:0)
您可以将此验证移至Service object
class ValidateXXXParam
def initialize(param)
@param = param
end
def call
if ['map', 'card'].include?(@param)
...
else
...
end
end
end
# call it in controller
ValidateXXXParam.new(params[:display_type]).call
这是保持控制器代码清洁干燥的好方法。