我正在尝试在更新时限制对某个属性的访问。
管理员可以随时更新所有Need
,除了他们只能在Need
的{{1}} bool更新is_public
{1}}是need_state
。
CanCan不允许根据正在设置的特定属性来限制更新操作...所以我认为他们唯一的方法是创建一个名为in_progress
的特殊方法。
我的表格正在调用它并发送以下参数:
set_is_public
如何更新控制器中的操作需求?
我无法弄清楚如何读取这些参数:
{"utf8"=>"✓",
"authenticity_token"=>"2u9AZ7AJDYQrXm3LubMAxlxhjbsQ14myUTyOSyvoKzk=",
"need"=>{"id"=>"5",
"is_public"=>"true"},
"commit"=>"Set as Public"}
属性更新为is_public
参数的值。答案 0 :(得分:1)
你发布的params显示了一个嵌套的散列,所以你应该只需要执行以下操作:
the_need = Need.find( params["need"]["id"] )
the_need.is_public = params["need"]["is_public"]
the_need.save
我希望有所帮助!
编辑添加:您可能需要处理参数限制,具体取决于您的Rails版本,一种技术是以前的过滤器:
params.require(:need).permit(:id, :is_public)
如果没有帮助,请澄清您的问题