Я хотел бы отобразить одну форму, в которой каждый пользователь может редактировать разные поля.Rails: редактируемое/редактируемое поле в зависимости от разрешений пользователя
В настоящее время код выглядит следующим образом:
<% if can? :update, item %>
` <%= f.text_field :title %>
<% else %>
<%=h f.object.title %>
<% end %>
Я могу упаковать это в серии хелперов (по одному для каждого типа поля), но я также должен проверить в контроллере, может ли пользователь обновить все (в случае, если злоумышленник пытается отправить поля, на которые он не уполномочен).
Есть ли более чистый узор в рельсах для этого типа задач? В идеале я хотел бы определить эти разрешения доступа в модели и распространить изменения на контроллер и просмотр.
Edit:
Использование readonly
тег не является жизнеспособным вариантом; Он не заботится о проверках и заменяет логику представления множеством CSS. Не лучший компромисс.
Это просто косметика; Это зависит от того, предпочитаете ли вы писать много CSS (чтобы стилировать элементы управления readonly, как если бы они были обычным текстом) или предпочесть дополнительную логику в представлении. И это не касается вопроса о проверке на стороне контроллера. – shmichael