5

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

在讨论关系时,Mongoid 网站上的文件没有表明任何字段声明,这就是我问的原因。

4

2 回答 2

7

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

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

belongs_to :user, foreign_key: :friend_id

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

于 2013-07-05T08:00:11.830 回答
0

型号region.rb

class Region
  ...
  field :title
  has_many :users
  ...

型号user.rb

class User
  ...
  belongs_to :reg, class_name: "Region", foreign_key: :reg_id
  ...

您现在可以按如下方式使用regionfor ,例如:useruser.reg

= user.reg.title
于 2016-01-20T09:27:10.417 回答