Итак, это приложение rails, но на самом деле это скорее общий вопрос о рубине:
У меня есть модель с несколькими областями применения. Например:
Photo.recent
Photo.popular
Photo.featured
В моем приложении есть представление «Просмотр фотографий», где я хочу, чтобы можно было передать один параметр и позволить пользователю указать область, которую он хочет просмотреть, то есть:
example.com/photos/browse?view=recent
Это дает мне params [: view], и мне нужно прикрепить его как вызов метода для Photo.
Итак, мой первый вопрос: как вы можете делать такие вещи в Ruby?
Во-вторых, это может быть угрозой безопасности, если я не смогу ограничить ввод, если я просто прикреплю фото. whatever the user types in the url
тогда я рискую, что хакер скажет example.com/photos/browse?view=delete_all
Это, очевидно, плохая идея .
Итак, мой второй вопрос: как я могу создать белый список или что-то для того, что можно вызвать - или даже лучше настроить какой-то метод, который может безопасно принимать параметр из URL и возвращать информацию только в том случае, если пользователь запрашивает допустимая именованная область.
Наконец, у меня есть несколько областей, которые предназначены только для администраторов. У меня определены пользовательские способности (с использованием CanCan), поэтому я могу запросить current_user.has_role?
, чтобы проверить, авторизован ли пользователь для чего-либо, но есть ли способ связать разрешения с областью действия?
Спасибо!