Rails:可编辑/不可编辑的字段,具体取决于用户权限

时间:2010-07-05 14:20:29

标签: ruby-on-rails webforms authorization

我想显示一个表格,每个用户都可以在其中编辑不同的字段。

目前,代码如下所示:

<% if can? :update, item %>  
` <%= f.text_field :title %>
<% else %>
  <%=h f.object.title %>
<% end %>

我可以将它打包成一系列帮助程序(每个字段类型一个)但我还必须检查控制器是否用户可以更新所有提交的字段(如果恶意用户试图提交他未被授权的字段对)。

这种类型的任务在轨道中是否有更清洁的模式?理想情况下,我想在模型中定义这些访问权限,并将更改传播到控制器和视图。

修改

使用readonly标签不是一个可行的选择;它不会处理验证并用大量CSS替换视图逻辑。不是最好的权衡。

3 个答案:

答案 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