Если вы используете House.find(params[:id])
, у вас есть потенциальная дыра в безопасности, поскольку данный пользователь может просто изменить номер в URL и получить доступ к дому для другого пользователя.Так что, если вы идете по этому пути, вы должны добавить что-то, чтобы защитить несанкционированный доступ.
OTOH, current_user.house
хранит их отдельно, но нуждается в альтернативном коде для функций администратора.
Для простых приложений вы можете сделать это вручную, но для более крупных приложений вы можетеЯ хочу рассмотреть структуры авторизации, такие как cancan или Declarative_authorization , где вы можете легче определить разрешения.
Я использую decl_auth сам, и все мои контроллеры либо используют его методзагрузки ресурса с помощью filter_resource_access
(загружает соответствующий ресурс или броски и ошибки, если это не разрешено) или вручную с помощью House.with_permissions_to(:index)
, который даст мне дом только при наличии разрешения на его загрузку.
КакRailscasts всегда говорит это лучше всего: cancan и декларативное разрешение .