我读了mongoid中的继承,似乎所有继承的类都将保存在基类中,例如。
class BaseClass
end
class ChildClass1 < BaseClass
end
class ChildClass2 < BaseClass
end
字符串
似乎所有这些都存储在BaseClass集合中。
我实际上希望它们存储在单独的集合中,例如ChildClass1 - collection
和ChildClass2 - collection
。
我读了mongoid中的继承,似乎所有继承的类都将保存在基类中,例如。
class BaseClass
end
class ChildClass1 < BaseClass
end
class ChildClass2 < BaseClass
end
字符串
似乎所有这些都存储在BaseClass集合中。
我实际上希望它们存储在单独的集合中,例如ChildClass1 - collection
和ChildClass2 - collection
。
5条答案
按热度按时间pu3pd22g1#
我知道这是一年前发布的,但这可能是你要找的:
字符串
mv1qrgav2#
请尝试这种方法:
字符串
我在我的Rails 5应用程序中这样做,它肯定会工作。
rxztt3cl3#
我遇到了同样的问题,并没有在网络上找到一个很好的解决方案。经过几次尝试,我开发了一个解决方案:
字符串
在访问mongo集合之前,mongoid从'collection_name'方法获取集合名称。
这样,我覆盖了mongoid类的方法'collection_name',它返回集合名称(而不是带's '的基类名称:' As ')
因此,来自类B的所有写(或读)命令将插入(选择)到'your_collection_name_1'集合中,而类C将插入到'your_collection_name_2'集合中。
8hhllhi24#
这是不可能的。因为这是Mongoid中STI的概念,就像Mongoid的创建者Durran解释的那样
如果你真的想保存在几个集合中,你需要使用模块包括:
字符串
68de4m5k5#
从Mongoid v8.1开始(可能也是v8.0,还没有在那个版本中测试过),你可以使用
store_in collection: "collection_name"
。字符串
这将在2个不同的集合(形状和圆圈)中创建文档。
参考网址:https://www.mongodb.com/docs/mongoid/current/reference/inheritance/#persistence-contexts