Може ли как да се упълномощи модел за събиране в един контролер?

Използвам канкан с релси 4. Моят потребителски модел има много запознанства и запознанствата имат много отговори. В действието за показване на потребителския контролер искам да упълномощя всички тях:

@user = User.find params[:id]
authorize! :read, @user

@datings = @user.first_page_datings
authorize! :read, @datings

# How to authorize replies of all the datings here?

Въпросът е как да оторизирам отговорите на всички запознанства тук?


person xnjiang    schedule 03.09.2013    source източник
comment
Можете ли да опитате това authorize! :read, Dating   -  person Sagar.Patil    schedule 03.09.2013
comment
Мисля, че предлагате да упълномощите! :read, Отговор? Но по този начин не може да каже кой отговор да упълномощи. Това, което мисля сега, е циклични запознанства и авторизиране на отговорите на запознанствата: @datings.each{|d|authorize! :четете, d.replies}   -  person xnjiang    schedule 03.09.2013
comment
пробвай това authorize! :read, @datings.replies   -  person Sagar.Patil    schedule 03.09.2013


Отговори (1)


Вместо да се опитвате да упълномощите всички дъщерни обекти, използвайте @dating = @user.datings.accessible_by(current_ability), за да заредите разрешените.

person graywh    schedule 26.09.2013
comment
Благодаря за вашия отговор! Помислете за тази ситуация: В контролера за отговор имам действие за индексиране. Получавам отговори от: @replies = @replyable.replies.accessible_by(current_ability) В шаблона на индекс също искам да покажа потребител на всеки @replies: това е @replies.first.user. Ясно е, че @replies.first.user все още не са упълномощени. Някаква мисъл? - person xnjiang; 26.09.2013
comment
В такъв случай бих тествал способността в изгледа: <%= reply.user if can?(:read, reply.user) %>. - person graywh; 26.09.2013