Diciamo che ho tre modelli Active Record:Rails polimorfa dipendente:: distruggere non funziona correttamente
class Tissue
has_many :boogers, as: :boogerable, dependent: :destroy
end
class Finger
has_many :boogers, as: :boogerable, dependent: :destroy
end
Class Boogers
belongs_to :boogerable, polymorphic: true
end
Diciamo che la mia domanda può trasferire una caccola da un dito ad un tessuto, e una volta fatto questo, il dito è distrutto (yikes!). Per qualche ragione, quando il dito viene distrutto, sta anche distruggendo i boogers che precedentemente appartenevano ad esso e da allora sono stati trasferiti su un tessuto. Nel registro posso vedere che quando il dito viene distrutto ricorda l'ID dei boogers che USED ne fa parte e li distrugge. Non controlla se il boogerable_type è ancora 'finger' e quindi distrugge quelli con tipo 'tissue'.
Quando un dito viene distrutta, si sta facendo questo:
DELETE FROM boogers WHERE booger.id = 387
Quando si dovrebbe fare questo:
DELETE FROM boogers WHERE boogerable_id = 1 AND boogerable_type = 'finger'
Chiunque venire attraverso questo prima?
Mostraci il codice in cui stai trasferendo e distruggendo. –
la tua domanda è utile, funziona per me. –