5

Trong hệ thống của tôi, tôi đã xác định STI. Dog được kế thừa từ Animal, trong bảng animals có cột type với giá trị "Dog".Thừa kế Bảng đơn Rails: Cách ghi đè giá trị được ghi vào trường loại

Bây giờ tôi muốn có SpecialDog kế thừa từ con chó, chỉ để sửa đổi hành vi nhẹ trong một số trường hợp đặc biệt. Dữ liệu vẫn như cũ. Tôi cần tất cả các truy vấn được chạy qua SpecialDog để trả về các giá trị trong cơ sở dữ liệu có loại Dog.

Vấn đề của tôi là vì tôi có cột type, đường ray nối thêm WHERE "animals"."type" IN ('SpecialDog') vào truy vấn của tôi để tôi không thể truy cập vào các mục nhập Dog gốc. Vì vậy, những gì tôi muốn là bằng cách nào đó ghi đè lên giá trị đường ray sử dụng khi nó truy cập cơ sở dữ liệu thông qua SpecialDog để cư xử như Dog.

Có cách nào để ghi đè giá trị đường ray sử dụng cho cột loại không?

+0

Bạn có tiết kiệm được bất kỳ chú chó nào là SpecialDog không? Hay tất cả chó Dog, nhưng đôi khi chúng đặc biệt? – Frans

+0

Trong cơ sở dữ liệu, chúng luôn là 'Chó' – davidrac

Trả lời

8

Loại cảm giác như thực hành không tốt để thực hiện theo cách này, nhưng mã bên dưới sẽ hoạt động theo như tôi có thể biết.

def self.sti_name 
    "Dog" 
end 

gợi ý khác của tôi là không có SpecialDog kế thừa từ Dog, nếu có thể.

+0

không hoạt động nữa ??? tôi có cùng một trường hợp, ruby ​​2.0.0, đường ray 3.0.10, không thành công khi sử dụng nó. –

Các vấn đề liên quan