小编Iai*_*ain的帖子

通过Rails 4中的强参数仅允许某些值

我有一个字段otp_set_up,在company_user模型中允许为"true"或"false".

有一个用例,sys管理员用户可以将此字段重置为"false".

虽然可以通过代码将字段设置为"true",但是用户可以通过表单编辑等将其设置为"true".

我没有在模型中添加验证,因为它可以是"true"或"false".

在params.require .permit位之前,我在params方法中有以下代码,特定于控制器中的更新:

if curr_company_user.is_sys_admin? && curr_company_user.can_crud_company_users? && params[:id].to_i != curr_company_user.id

  params[:company_user] = params[:company_user].except(:otp_set_up) if params[:company_user][:otp_set_up] == true
  params.require(:company_user).permit(:otp_setup, etc. etc....

elsif etc. etc...
Run Code Online (Sandbox Code Playgroud)

这有效.系统管理员用户无法将otp_set_up设置为"true".

我的问题是:

这是在Rails中执行此操作的最佳和正确方法吗?对我来说这似乎有些笨拙,通过params hash并删除一点.

有更好/更清洁的方式吗?

ruby-on-rails strong-parameters ruby-on-rails-4

4
推荐指数
1
解决办法
2660
查看次数