Ruby on rails Rails:可编辑/不可编辑字段,具体取决于用户权限
我想显示一个表单,每个用户可以在其中编辑不同的字段 目前,代码如下所示:Ruby on rails Rails:可编辑/不可编辑字段,具体取决于用户权限,ruby-on-rails,webforms,authorization,Ruby On Rails,Webforms,Authorization,我想显示一个表单,每个用户可以在其中编辑不同的字段 目前,代码如下所示: <% if can? :update, item %> ` <%= f.text_field :title %> <% else %> <%=h f.object.title %> <% end %> 我可以将其打包为一系列帮助程序,每种字段类型一个,但我还必须在控制器中检查用户是否可以更新所有提交的字段,以防恶意用户尝试提交未经授权的字段 对于这类任务
<% if can? :update, item %>
` <%= f.text_field :title %>
<% else %>
<%=h f.object.title %>
<% end %>
我可以将其打包为一系列帮助程序,每种字段类型一个,但我还必须在控制器中检查用户是否可以更新所有提交的字段,以防恶意用户尝试提交未经授权的字段
对于这类任务,rails中是否有更清晰的模式?理想情况下,我希望在模型中定义这些访问权限,并将更改传播到控制器和视图
编辑:
使用readonly标签不是一个可行的选择;它不负责验证,而是用大量CSS替换视图逻辑。这不是最好的折衷办法。您可以将其设置为只读
<%= f.text_field :title, :readonly=> (can? :update, item)? true : false %>
请看一下授权插件。我不相信有任何方法可以通过插件解决此问题,唯一的选择是将控制器代码更改为:
@model=Model.new
@model.field = params[:model][:field] if can? ....
@model.save
只是化妆品;这取决于您是喜欢编写大量CSS,而不是像纯文本一样为只读控件设置样式,还是喜欢在视图中添加一些额外的逻辑。而且它没有解决控制器端验证的问题。据我所知,它与声明性授权或cancan没有什么不同:我仍然必须在控制器/视图中实现所有不同的逻辑。是的。我意识到您已经在使用自动化框架。我想控制器中的条件检查是无法逃避的。