外键和Mongoid

jas*_*328 5 ruby ruby-on-rails foreign-keys mongodb mongoid

Mongoid中两个模型之间的关系中是否明确要求外键?例如.

class User
  include Mongoid::Document
  has_many :posts
end

class Post
  include Mongoid::Document
  belongs_to :user
  # Is this necessary below?
  field :user_id, type: Integer
end
Run Code Online (Sandbox Code Playgroud)

在讨论关系时,Mongoid网站上的文件并未表明任何字段声明,这就是我要求的原因.

Ste*_*eve 7

不,通常不需要单独的外键字段声明.Mongoid将user_id在需要它的任何文档上隐式创建字段.它遵循与ActiveRecord相同的外键命名约定.

如果这些约定不适合您的模型(例如,如果您有两个关联到同一个类),那么您可以覆盖外键名称.例如

belongs_to :user, foreign_key: :friend_id
Run Code Online (Sandbox Code Playgroud)

这与ActiveRecord几乎相同(但当然没有迁移).