【发布时间】:2013-04-24 05:40:33
【问题描述】:
尤其是MongoDB 和Mongoid,我仍然在思考。
假设我有一个User,每个User 都有一个Thingamajig。当我创建User
我希望系统也自动为该User 创建一个空白Thingamajig。
每个Thingamajig 都有一个whatsit 字段,如果它有值则必须是唯一的,但在创建时允许没有值。
所以我定义了以下类。
class Thingamajig
include Mongoid::Document
field :whatsit, type: String
index({whatsit: 1}, {unique: true, name: 'whatsit_index'})
end
class User
include Mongoid::Document
field :name, type: String
index({name: 1}, {unique: true, name: 'user_name_index'})
embeds_one :thingamajig, dependent: :nullify, autobuild: true
end
但是当我发现什么
User.create!(name: 'some name')
User.find(name: 'some name').thingamajig 是 nil。
问题:
- 如何确保每个用户都获得关联的 Thingamajig?和
- 如何指定
User的name字段是必需的?
仅供参考,我使用的是 Sintara 而不是 Rails(如果这对任何人都很重要的话)。
【问题讨论】:
标签: ruby mongoid associations autocreate