我试图通过使用 MongoMapper 的类继承来获得更好且有组织的结果,但遇到了一些麻烦。
class Item
include MongoMapper::Document
key :name, String
end
class Picture < Item
key :url, String
end
class Video < Item
key :length, Integer
end
当我运行以下命令时,它们并没有完全返回我所期望的结果。
>> 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?">]
它们都是相同的结果,我希望有Item.all
列出所有结果,包括其本身,Picture
, and Video
。但如果该物品实际上是Picture
,如果我跑了,我希望它能被归还Picture.all
如果我跑步就不会Video.all
。你明白我的意思吗?
我是否误解了继承在这里的运作方式?如果我是复制这种行为的最佳方法是什么?我正在尝试遵循this http://railstips.org/2009/12/18/why-i-think-mongo-is-to-databases-what-rails-was-to-frameworks(第 2 点)作为我希望如何开展这项工作的指南。我猜他能跑Link.all
查找所有链接,并且不包括继承自的所有其他类Item
。我错了吗?