Tôi đang cố gắng để có được một kết quả tốt hơn và có tổ chức từ việc sử dụng thừa kế lớp với MongoMapper, nhưng gặp một số rắc rối.MongoMapper Parent Inheritance
class Item
include MongoMapper::Document
key :name, String
end
class Picture < Item
key :url, String
end
class Video < Item
key :length, Integer
end
Khi tôi chạy các lệnh sau, chúng không hoàn trả được những gì tôi mong đợi.
>> Item.all
=> [#<Item name: "Testing", created_at: Sun, 03 Jan 2010 20:02:48 PST -08:00, updated_at: Mon, 04 Jan 2010 13:01:31 PST -08:00, _id: 4b416868010e2a04d0000002, views: 0, user_id: 4b416844010e2a04d0000001, description: "lorem?">]
>> Video.all
=> [#<Video name: "Testing", created_at: Sun, 03 Jan 2010 20:02:48 PST -08:00, updated_at: Mon, 04 Jan 2010 13:01:31 PST -08:00, _id: 4b416868010e2a04d0000002, views: 0, user_id: 4b416844010e2a04d0000001, description: "lorem?">]
>> Picture.all
=> [#<Picture name: "Testing", created_at: Sun, 03 Jan 2010 20:02:48 PST -08:00, updated_at: Mon, 04 Jan 2010 13:01:31 PST -08:00, _id: 4b416868010e2a04d0000002, views: 0, user_id: 4b416844010e2a04d0000001, description: "lorem?">]
Họ là tất cả các kết quả tương tự, tôi sẽ mong đợi để có Item.all
danh sách tất cả các kết quả, vì vậy kể cả chính nó, Picture
, và Video
. Nhưng nếu mặt hàng thực sự là một Picture
, tôi muốn nó được trả lại nếu tôi chạy Picture.all
và không nếu tôi chạy Video.all
. Bạn có biêt tôi đang nghĩ gì?
Tôi có hiểu lầm cách thức hoạt động của kế thừa ở đây không? Nếu tôi là cách tốt nhất để nhân rộng loại hành vi này là gì? Tôi đang cố gắng theo dõi this (điểm 2) như một hướng dẫn về cách tôi muốn công việc này. Tôi cho rằng anh ta có thể chạy Link.all
để tìm tất cả các liên kết và không bao gồm mọi lớp khác kế thừa từ Item
. Liệu tôi có sai?
Cảm ơn bạn rất nhiều. Đã khá bực bội để nói rằng ít nhất! – Garrett