ruby - mongoid embeds_one 构建指南

标签 ruby mongoid

感谢您的宝贵时间!

代码很简单(mongoid没有使用rails):

require 'mongoid' # version 6.0.2

Mongoid.load!('mongoid.yml', :development)

class Office
  include Mongoid::Document

  embeds_one :owner
  embeds_many :addresses
end

class Owner
  include Mongoid::Document
end

class Address
  include Mongoid::Document
end

我可以成功调用 office.addresses.build,如下所示。

office = Office.new
office.addresses.build
office.save

但是当我调用 office.owner.build 时,会弹出错误提示

embed_one.rb:23:in `<main>': undefined method `build' for nil:NilClass (NoMethodError)

它应该以这种方式工作,对吗?哪里错了。

puts office.owner.class # NilClass

最佳答案

从 sleep 中恢复精神后......

我使用 puts office.methods 列出 office 可以调用的所有方法。

# Here's all the methods has *owner* in it
owner=
owner?
has_owner?
build_owner
create_owner
owner

office.build_owner 就是我正在寻找的!

关于ruby - mongoid embeds_one 构建指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40970316/

相关文章:

mongodb - Mongoid 递归查找嵌入文档

ruby-on-rails - Ruby rails - NilClass :Class 的未定义方法 `model_name'

ruby - bundle 安装中的 --without 选项有什么意义?

ruby - 如何创建 Mongoid "within date range or nil"查询?

ruby-on-rails - 安装 Mongoid 后使用 Active Record 生成器?

mongodb - Mongo 使用带排序的索引

ruby-on-rails - 在 Rails 中使用 MongoID 保存二进制数据

ruby-on-rails - 评估 Controller 中每个 do block 内的迭代器

ruby-on-rails - 如何让字符串表现为变量?

ruby-on-rails - Ruby:将 sqlite 命令转换为 postgres 命令