можно проверить значения формы - PullRequest
1 голос
/ 17 июля 2011

Есть ли способ авторизации элементов формы с помощью 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 %>

1 Ответ

0 голосов
/ 18 июля 2011

Вы не сможете помешать пользователям преднамеренно отправлять неавторизованные данные в ваше приложение, поэтому вам придется проверить авторизацию в обновлении и создать действия контроллера, прежде чем создавать ресурс бренда. Что-то вроде

agency = Agency.find(params[:brand][:agency_id])
authorize! :read, agency
...