Это правильный способ использования way: зависимый =>: destroy в моем приложении RoR? - PullRequest
1 голос
/ 20 августа 2010

Так настроено мое приложение RoR

note.rb

belongs_to :user 
has_many :note_categories
has_many :categories, :through => :note_categories

category.rb

has_many :note_categories
has_many :notes, :through => :note_categories

Я хочу сделать так, чтобы при удалении заметки пользователь также удалял соответствующую запись в таблице note_categories. Должен ли я использовать: зависимый =>: уничтожить, чтобы сделать это?

Кроме того, если бы я хотел сделать так, чтобы если пользователь удалял заметку, а это значит, что в этой категории больше нет заметок, сама категория была удалена, как бы я это сделал? Спасибо за чтение.

1 Ответ

3 голосов
/ 20 августа 2010

Я хочу сделать так, чтобы когда пользователь удаляет заметку, соответствующую запись в таблице note_categories также удалено Я использую: зависимый =>: уничтожить, чтобы сделать это?

Да, это правильно.

Кроме того, если бы я хотел сделать так, чтобы если пользователь удаляет заметку, и это означает, что больше нет заметок с категорией, которая была, категория сама была удалена, как бы мне поступить что?

Вы используете обратный вызов after_destroy.

class Note < ActiveRecord::Base
  belongs_to :user 
  has_many :note_categories, :dependent => :destroy
  has_many :categories, :through => :note_categories      
end 

class Category < ActiveRecord::Base
  has_many :note_categories, :dependent => :destroy
  has_many :notes, :through => :note_categories
end

class NoteCategory < ActiveRecord::Base
  belongs_to :note
  belongs_to :category
  after_destroy { category.destroy  if category.notes.empty? }
end
...