Mam przesyłki i faktury.Szyny 3. przed sprawdzaniem oryginalności, aby zapobiec usuwaniu rekordów nadrzędnych.
faktury należy do wysyłki
przesyłka ma jedną fakturę
Jeśli przesyłka ma fakturę, wówczas przesyłka nie powinien móc zostać usunięte. Muszę ustawić to w modelach, ponieważ używam ActiveAdmin.
Więc zrobiłem to w shipment.rb
has_one :invoice
before_destroy :check_for_invoice
private
def check_for_invoice
unless invoice.nil?
self.errors[:base] << "Cannot delete shipment while its invoice exists."
end
end
Ale ja po prostu dostać żółtą wiadomość mówiąc: „Przesyłka nie może być usunięty”, ale to było w rzeczywistości usunięte.
Jak mogę zapobiec usunięciu przesyłki?
Ach tak! Zapomniałem zwrócić false. Też zaksięgowałem tę część kodu błędnie "if invoice.nil?", Zamiast tego powinno to być 'until invoice.nil?'. – leonel
Byłem ciekawy logiki - ale pomyślałem, że to może być coś dziwnego, co robisz. Zaktualizuję moją odpowiedź, aby była zgodna ze względu na potomność. –
Sprawdź [tę odpowiedź na podobne pytanie] (http://stackoverflow.com/a/10257516/703233), aby uzyskać lepszy sposób na zrobienie tego. – nitsas