При условии, что вы используете правильные отношения между users
и categories
, т.е.
# in User.rb
has_many :categories
# in Category.rb
belongs_to :user
вы должны иметь возможность использовать что-то вроде этого в вашем контроллере:
@categories = current_user.categories
Таким образом, вы используете текущего пользователя независимо от того, какие параметры могут быть переданы, и он получит только свои галереи. Вы больше не ищете потенциально небезопасный user_id.
Если вы беспокоитесь о том, что кто-то может просматривать не принадлежащую им категорию, вы можете добавить свой собственный закрытый метод, аналогичный :authenticate_user!
, чтобы убедиться, что отображаемая или измененная категория действительно принадлежит текущему пользователю запустить его в before_filter, как и другой, и перенаправить, если у них нет разрешения.
private
def authenticate_owner!
if user_signed_in? && current_user.id == params[:id] # or something similar
return true
end
redirect_to root_url,
:notice => "You must have permission to access this category."
return false
end