У меня есть модель заметки со следующей ассоциацией
note.rb
has_many :note_categories, :dependent => :destroy
has_many :categories, :through => :note_categories
Модель NoteCategory была создана для функционирования в качестве таблицы соединения между заметками и категориями.
Мне нужно реализовать следующее:
- Пользователь удаляет категорию из заметки.Это можно сделать, удалив одну категорию из заметки (удаляет одну запись в таблице note_categories), или полностью удалив заметку (удаляет все записи в таблице note_categories, относящиеся к заметке)
- перед строкой/ s в note_categories / удалено, мне нужно определить, является ли пользователь, удаляющий категорию из заметки, тем же пользователем, который изначально создал категорию (поле создателя в модели категории)
- Если этотот же пользователь, сама запись категории должна быть удалена
Очевидно, чтобы сделать это, мне нужно получить доступ к идентификатору пользователя, чтобы проверить поле создателя категории.Я уже использую метод before_destroy в модели NoteCategory для некоторых других вещей, но я не могу получить доступ к current_user.id там, потому что это модель, а current_user - метод в Application Controller.Из вопросов, которые я читал здесь о SO, кажется, что доступ к идентификатору текущего пользователя из модели - плохая форма.
Я не думаю, что смогу использовать контроллер в таких обстоятельствах, поскольку при удалении заметки строка :dependent => :destroy
означает, что соответствующие строки в note_categories также удаляются.Мне также необходимо выполнить проверку создателя в этой ситуации, но строки note_categories удаляются с помощью метода destroy в model , а не в controller , что является поведением, определяемым :dependent => :destroy
.
Так как мне поступить?Спасибо за чтение!