我对RoR很新。对不起,如果我使用错误的术语或答案是显而易见的。
最初我有一个用户模型如下,
class User
include Mongoid::Document
devise :database_authenticatable,
:registerable,
:recoverable,
:rememberable,
:trackable,
:validatable,
:token_authenticatable,
:omniauthable
has_many :foos
field :name, :type => String
# Some other company fields
....
end
class Foo
include Mongoid::Document
belongs_to :user
...
end
此初始用户模型用于代表公司。
然后我决定添加另一个与初始User模型具有不同角色的模型,因此我开始使用多态关联并将必要的字段从User移动到Company模型。我还添加了一个与公司没有直接关系的经理模型。我基本上使用User model for devise。
class User
include Mongoid::Document
devise :database_authenticatable,
:registerable,
:recoverable,
:rememberable,
:trackable,
:validatable,
:token_authenticatable,
:omniauthable
belongs_to :rolable, :polymorphic => true
end
class Company
include Mongoid::Document
has_one :user, :as => :rolable
has_many :foos
field :name, :type => String
# Some other company fields
....
end
class Manager
include Mongoid::Document
has_one :user, :as => rolable
end
class Foo
include Mongoid::Document
belongs_to :company
...
end
到目前为止,新用户注册似乎一切正常。但是,我必须转换旧的数据库。令我困惑的是我之前拥有的has_many协会。我已经实现了迁移(使用此gem,https://github.com/adacosta/mongoid_rails_migrations)将字段从User模型移动到Company模型,但我再也无法弄清楚如何处理关联。
答案 0 :(得分:1)
如果您不需要将旧数据库中的信息传输到新数据库,则无需运行迁移。
MongoDB可以在文档上有一些无用的密钥,没有问题。您可以遇到的唯一问题是在数据库中保存额外的八位字节。