这是正确的使用方式:dependent => :在我的RoR应用程序中销毁?

时间:2010-08-20 12:21:05

标签: ruby-on-rails associations

这是我的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表中的相应条目。我使用:dependent => :毁灭那样做?

另外,如果我想这样做,以致如果用户删除了一个音符,这意味着它没有更多的音符,那么类别本身就被删除了,我该怎么做?谢谢你的阅读。

1 个答案:

答案 0 :(得分:3)

  

我想让它成为一个用户   删除相应的注释   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