【发布时间】:2023-03-15 05:18:01
【问题描述】:
我有一个字段 otp_set_up,在 company_user 模型中允许为“true”或“false”。
有一个用例,系统管理员用户可以将此字段重置为“false”。
虽然可以通过代码将该字段设置为“true”,但没有用户可以通过表单编辑等将其设置为“true”。
我没有在模型中添加验证,因为它可以是“真”或“假”。
我在 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...
这行得通。系统管理员用户不能将 otp_set_up 设置为“true”。
我的问题是:
这是在 Rails 中最好和正确的方法吗?对我来说这似乎有点 hacky,通过 params 哈希并删除一点。
有没有更好/更清洁的方法?
【问题讨论】:
-
您是通过视图或控制器中的代码还是仅通过模型将值设置为“true”?
-
这实际上还没有实现!但应在 otp_setup 控制器创建方法中设置为“true”。
标签: ruby-on-rails ruby-on-rails-4 strong-parameters