5

Sistemimde zaten tanımlı STI var. DogAnimal'dan itibaren animals tablosunda "Dog" numaralı type sütun var.Raylar Tekli Tablo Devralma: Tür alanına yazılan değer nasıl yazılır

Şimdi bazı özel durumlarda davranışı biraz değiştirmek için SpecialDog numaralı köpekten miras almak istiyorum. Veriler hala aynı. Dog türüne sahip veritabanındaki değerleri döndürmek için SpecialDog aracılığıyla çalıştırılan tüm sorgulara ihtiyacım var.

Benim sorunum type sütun beri ben orijinal Dog girişlere alamayan böylece, raylar benim sorguya WHERE "animals"."type" IN ('SpecialDog') ekler olmasıdır. Yani istediğim, SpecialDog aracılığıyla veritabanına eriştiğinde değer raylarının kullandığı Dog gibi davranmaktır.

Tür sütunu için kullanılan değer raylarını geçersiz kılmanın bir yolu var mı?

+0

Herhangi bir köpeği SpecialDog olarak kaydediyor musunuz? Yoksa tüm köpekler Köpek, ama bazen özel mi? – Frans

+0

Veritabanında her zaman 'Dog' – davidrac

cevap

8

Bu şekilde yapmak kötü bir uygulama gibi geliyor, ancak aşağıdaki kod, söyleyebileceğim kadar çalışmalı.

def self.sti_name 
    "Dog" 
end 

Benim diğer öneri mümkün değilse, Dog den SpecialDog kaynaklanan devralma sahip olmaktır.

+0

artık çalışmıyor ??? Aynı durumda, ruby ​​2.0.0, ray 3.0.10 var, bunu kullanarak hiçbir başarı. –

İlgili konular