开发者

How do I delete a record from all tables it is referred to?

Good morning fellow Overflowers,

Small problem with model associations. I have these model associations:

class Categorization < ActiveRecord::Base
  belongs_to :exhibit
  belongs_to :category
end

class Category < ActiveRecord::Base
  has_many :categorizations
  has_many :exhibits, :through => :categorizations
  acts_as_indexed :fields => [:title]
  validates :title, :presence => true, :uniqueness => true 
end

class Exhibit < ActiveRecord::Base
  has_many :categorizations
  has_many :categories, :through => :categorizations, :source => :category
  acts_as_indexed :fields => [:title, :bulb]
  validates :title, :presence => true, :uniqueness => true
  belongs_to :foto, :class_name => 'Image'
end

So, essentially Categorization ends up with these columns (date/time stamps omitted): categorization_id, exhibit_id and category_id.

My problem is that when I delete an Exhibit, its reference on the Categorization table is not deleted thus getting a DB error on my view. I have to first unassign the Exhibit from any Category and then delete it safely. Or (given for example that the Exhibit I delete has :exhibit_id=>'1') when I give in the rails console: Categorization.find_by_exhib开发者_如何学Pythonit_id(1).destroy

Thanks for any help!!


You can set the :dependent options on associations that you want Rails to follow when you delete their parents:

class Exhibit < ActiveRecord::Base
  has_many :categorizations, :dependent => :destroy
  ...
end
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜