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网站上的文件在讨论关系时没有表明任何领域的声明,这就是我要问的原因。
答案 0 :(得分:7)
不,通常不需要单独的外键字段声明。 Mongoid将隐式在任何需要它的文档上创建user_id
字段。它遵循与ActiveRecord相同的外键命名约定。
如果这些约定不适合您的模型(例如,如果您对同一个类有两个关联),则可以覆盖外键名称。 e.g。
belongs_to :user, foreign_key: :friend_id
这又与ActiveRecord相同(但当然没有迁移)。
答案 1 :(得分:0)
型号region.rb
:
class Region
...
field :title
has_many :users
...
型号user.rb
:
class User
...
belongs_to :reg, class_name: "Region", foreign_key: :reg_id
...
您现在可以region
使用user
,如下所示user.reg
,例如:
= user.reg.title