我想显示一个表格,每个用户都可以在其中编辑不同的字段。
目前,代码如下所示:
<% if can? :update, item %>
` <%= f.text_field :title %>
<% else %>
<%=h f.object.title %>
<% end %>
我可以将它打包成一系列帮助程序(每个字段类型一个)但我还必须检查控制器是否用户可以更新所有提交的字段(如果恶意用户试图提交他未被授权的字段对)。
这种类型的任务在轨道中是否有更清洁的模式?理想情况下,我想在模型中定义这些访问权限,并将更改传播到控制器和视图。
修改
使用readonly
标签不是一个可行的选择;它不会处理验证并用大量CSS替换视图逻辑。不是最好的权衡。
答案 0 :(得分:0)
你可以让他们只读
<%= f.text_field :title, :readonly=> (can? :update, item)? true : false %>
答案 1 :(得分:0)
查看acl9插件以获取授权。
答案 2 :(得分:0)
我不相信使用插件解决这个问题,唯一的选择是将控制器代码更改为:
@model=Model.new
@model.field = params[:model][:field] if can? ....
@model.save