我有一个字段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并删除一点.
有更好/更清洁的方式吗?