Вам нужно поставить что-то вроде
filter_access_to [:index, :new, :create]
filter_access_to [:show, :edit, :update], :attribute_check => true
в вашем контроллере и что-то вроде
role :reg_ser do
has_permission_on :photos, :to => [:index, :new, :create]
has_permission_on :photos, :to => [:show, :edit: update] do
if_attribute :user_id => is { user.id }
end
end
в authorization_rules.rb
. Таким образом, все работает правильно, важно, чтобы вы включали :attribute_check
в контроллер для каждого действия, в котором вы хотите проверить атрибуты.
Я оставил :index
без него, так как довольно просто показать вещи текущего пользователя, добавив
def begin_of_association_chain
current_user
end
или аналогичный контроллеру (это может привести к тому, что InheritedResources будет иметь current_user.pictures
в качестве коллекции).
Вам также может быть интересно прочитать http://asciicasts.com/episodes/188-declarative-authorization