gpt4 book ai didi

ruby-on-rails - 在 Rails 中验证参数

转载 作者:数据小太阳 更新时间:2023-10-29 08:58:43 27 4
gpt4 key购买 nike

在我的 Rails 应用程序中,我想验证 filterpost_type 参数。

两者都是可选的,但如果它们存在,则它们必须有一个值,并且必须有一个与有效值数组中的一个相匹配的值。

在我的 Controller 中,我有两种检查它们的方法:

def validate_filter
if params.has_key?(:filter)
if params[:filter].present?
if ['popular', 'following', 'picks', 'promoted', 'first-posts'].include?(params[:filter])
return true
else
return false
end
else
return false
end
else
return true
end
end

def validate_post_type
if params.has_key?(:post_type)
if params[:post_type].present?
if ['discussions', 'snaps', 'code', 'links'].include?(params[:post_type])
return true
else
return false
end
else
return false
end
else
return true
end
end

然后在我的主 Controller 方法中我做了:

def index
raise ActionController::RoutingError.new('Not Found') unless validate_filter && validate_post_type
...

所以这意味着 post_type=post_type=cam 将返回 404 但 post_type=snaps 将返回 true。

是否有更好的方法来验证传递的参数是否有效但是否为空以及 key 本身是否存在。在这种情况下,仅使用 blank?present? 是不够的。

最佳答案

我可能会把这个逻辑移到模型中,但如果你真的想在 Controller 中使用它,你可以简化它。

def validate_filer
return true unless params.has_key?(:filter)
['popular', 'following', 'picks', 'promoted', 'first-posts'].include?(params[:filter])
end

关于ruby-on-rails - 在 Rails 中验证参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42030271/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com