лично, для решения подобных проблем я использовал камень разработки.
Затем я проверяю, что у меня есть какая-то связь между таблицами пользователя и машины (если использовать ваш пример), а затем помещаю простую проверку erb, чтобы убедиться, что они совпадают.Если это не так, используйте представление только для чтения, в противном случае разрешите редактируемое представление.Проверка erb будет выглядеть примерно так:
<% if current_user.id = car.owner.id %>
...show the editable view...
<% else %>
...show the read only view...
<% end %>
Если вы просто не хотите, чтобы они видели представление, если им «не принадлежит», вы можете использовать before_filter в контроллере для проверкиОтношение пользователя к автомобилю, а затем сделать "правильную вещь" на основе ваших необходимых требований приложения.Вы можете перейти к просмотру неавторизованных действий или просто перенаправить их в безопасное место.
Кроме того, вы можете просто скрыть ссылки или кнопки, которые ведут к представлению, но независимо от того, что бы я защищал вконтроллер также.
Надеюсь, это немного поможет ...
РЕДАКТИРОВАТЬ: я должен сказать, что использование драгоценного камня devise предоставляет мне полную поддержку "из коробки" из коробки, а затемВы можете относительно легко адаптировать его к конкретным бизнес-требованиям.