有没有办法用cancan授权表单元素?下面的代码有一个代理商的选择框,它只列出当前用户可以访问的代理商,但有人可以编辑表单并更改代理商的ID,以便他可以将品牌添加到其他代理商。有没有办法在cancan中限制这些类型的东西,如果不能我如何检查值?
can :read, Agency, :id => user.agencies_as_admin
can :create, Brand
形式
<%= form_for(@brand) do |f| %>
<%= f.label :name %><br />
<%= f.text_field :name %>
<%= f.label :agency_id %><br />
<%= f.collection_select :agency_id, Agency.accessible_by(current_ability), :id, :name %>
<%= f.submit %>
<% end %>
答案 0 :(得分:0)
您无法阻止用户有意向您的应用程序发送未经授权的数据,因此您必须在实际创建品牌资源之前检查更新中的授权并创建控制器的操作。像
这样的东西agency = Agency.find(params[:brand][:agency_id])
authorize! :read, agency