У меня есть модель, которая позволяет пользователю отмечать других пользователей как избранное.
Это отношение HABTM определено в модели User:
class User < ActiveRecord::Base
has_and_belongs_to_many :favorites, :class_name => "User", :join_table => "favorites", :association_foreign_key => "favorite_id", :foreign_key => "user_id"
end
Для FavoritesController требуется только три действия (индексировать, создавать,
уничтожить) для управления избранным пользователем.
Правило: только авторизованный пользователь (current_user) может управлять
их избранное.
Изначально я пытался представить это правило в authorization_rule.rb
Файл:
# allow authenticated user to update profile
has_permission_on :users, :to => :change do
if_attribute :id => is { user.id }
has_permission_on :favorites, :to => [:index,:create,:destroy]
end
Это не сработало, возможно потому, что у Фаворита нет
явная модель (т. е. избранное.rb). Хотя я могу ошибаться
это.
Кажется, правильный подход - это представлять правило в
ИзбранноеКонтроллер:
filter_access_to :all, :nested_in => :users
...
Но я не уверен, как правильно представить здесь правило.
Помощь действительно ценится.
** редактировать **
Было предложено использовать контекст для управления доступом в этой ситуации:
установка разрешений для контроллера без модели .
Я пытался изменить FavoritesController:
filter_access_to :all, :context => :favorites
Это изменение не имело эффекта.
** / редактировать **