如何在导轨中添加自定义强参数5
问题描述:
我希望我的服务器在调用控制器更新操作时更新模型参数(layout_is_public)。该参数不应该由用户直接更新。如何在导轨中添加自定义强参数5
我的控制器强PARAMS:
def allowed_params
params.require(:payload).permit(:name, :layout_id)
end
我在同一个控制器before_action:
def correct_layout
if allowed_params[:layout_id].present?
puts allowed_params.merge(layout_is_public: false).inspect
# puts output is as expected:
# => <ActionController::Parameters {"layout_id"=>1, "layout_is_public"=>false} permitted: true>
allowed_params = allowed_params.merge(layout_is_public: false)
end
end
我不知道如何更新我的allowed_params到,虽然包括新生成的参数。
我也不确定这个动作是否真的应该在控制器或模型本身中执行。任何帮助将不胜感激:)
注:layout_is_public变量刚刚设置为false在这里简短。
答
您也可以选择试试这个: -
private
def allowed_params
ap = params.require(:payload).permit(:name, :layout_id)
ap[:layout_is_public] = 'false' if params[:payload][:layout_id].present?
ap
end
答
您不能直接分配强参数。将其分配给变量并合并参数。
def correct_layout
if allowed_params[:layout_id].present?
puts allowed_params.merge(layout_is_public: false).inspect
# puts output is as expected:
# => <ActionController::Parameters {"layout_id"=>1, layout_is_public"=>false} permitted: true>
allowed = allowed_params
allowed_params = allowed.merge(layout_is_public: false)
end
end