Я хочу уничтожить все объекты, которые имеют parent_type == 'Profile'
или child_type == 'Profile'
, например:
Relationship.destroy_all(:parent_type => "Profile")
Relationship.destroy_all(:child_type => "Profile")
Как объединить это в один метод и один вызов sql?
Пошел с чем-то вроде этого:
class Group < ActiveRecord::Base
has_many :relationships
after_destroy :destroy_relationships
def destroy_relationships
conditions = %Q|(`relationships`.parent_type IN ("#{self.class.name}","#{self.class.base_class.name}") AND `relationships`.parent_id = #{self.id}) OR (`relationships`.child_type IN ("#{self.class.name}","#{self.class.base_class.name}") AND `relationships`.child_id = #{self.id})|
Relationship.delete_all(conditions)
end
end