2015-03-23 2 views
0

Я объединением модели item_photos для item и photo моделейобъединения не удаляется с зависимым: истинно

class ItemPhoto < ActiveRecord::Base 
    belongs_to :item 
    belongs_to :photo 
end 

class Item < ActiveRecord::Base 
    has_many :item_photos 
    has_many :photos, through: :item_photos, dependent: :destroy 
end 


class Photo < ActiveRecord::Base 
    has_many :item_photos, dependent: :destroy 
    has_many :items, through: :item_photos, dependent: :destroy 
end 

При удалении фото, я хочу, чтобы удалить элемент, если его последний один (вроде подсчет ссылок) или, по крайней мере, иметь возможность запускать код до

Возможно ли это?

ответ

0

Один из способов сделать это с обратным вызовом Ассоциации, например after_remove.

class Photo < ActiveRecord::Base 
    has_many :item_photos, dependent: :destroy 
    has_many :items, through: :item_photos, dependent: :destroy, after_remove: :do_stuff 

    private 

    def do_stuff 
    # ... 
    end 
end 

Документация здесь: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html (нет прямой связи, но поиск обратных вызовов ассоциации)