2016-07-30 2 views
0

У меня есть следующие под моим routes.rb:Уплотненный ресурс под пользователей, я хочу только current_user, чтобы иметь возможность получить доступ к

resources :users do 
    resources :submitted_terms, only: [:index, :create, :show] 
    end 

Я только хочу, чтобы current_user (вошедшего в систему пользователя), чтобы иметь возможность видеть их собственный submitted_terms в терминах index и show просмотров. Они не должны видеть никого, кроме index и show, а другие люди не смогут их увидеть.

Я думаю, что знаю, как это реализовать, но для меня это кажется грязным. Есть предположения?

ответ

0

Вы можете использовать фильтр before_action.

before_action :correct_user, only: [#action for which you need this filer] 

    def correct_user 
    @submitted_term = SubmittedTerm.find(params[:id]) 
    unless @submitted_term.user == current_user 
     flash[:notice] = "Insuffient privlage" 
     redirect_to #some path or render 
    end 
    end 

вам, возможно, потребуется изменить код или создать новое действие (фильтр) для проверки, если пользователь вошел в систему или не

+0

Да, это то, что я сделал, но если это во вложенном маршруте я думаю, что вам нужно сделайте что-то вроде '@user = SubmittedTerm.find (params [: user_id]). user'. –

+0

Я отредактировал свой ответ. см., если это работает –

+0

, вы должны использовать SubmittedTerm.find (params [: id]). user bcoz вы вызываете метод find на SubmittedTerm. –

Смежные вопросы