【发布时间】:2014-01-17 02:29:38
【问题描述】:
我在 Rails 中使用 Mongoid 定义了以下模型:
Class Character
include Mongoid::Document
field :n, as: name, type: String
field :p, as: :positions, type: Array
field :o, as: :roles, type: Array
field :r, as: :resource, type: String
embeds_one :base_stat
end
class BaseStat
include Mongoid::Document
embedded_in :character
end
我正在尝试使用具有这些关系的文档来为我的数据库播种 1)因为我最终必须这样做 2)所以我可以测试我是否正确使用了 Mongoid。我尝试了几种不同的方法来播种,但每次,我都可以创建 Character 文档,然后基于 Character 文档创建 BaseStat 文档,但调用 character.base_stat 返回 nil。
以下是我在 db/seeds.rb 中尝试过的没有引发错误的事情:
ch = Character.create!([etc])
ch.build_base_stat([etc])
Character.create!(name: value, name: value, base_stat: BaseStat.new(name: value, name:value))
ch = Character.create!([etc])
ch.create_base_stat([etc])
我也尝试过使用 ch.base_stat.create! (当我调用 rake db:setup 时引发错误)。
我知道 Character 和 BaseStat 文档都已创建,因为我可以在 Rails 控制台中搜索已播种的 Character 文档(a = Character.where(name: value)[0] 和 b = BaseStat.where(名称:值)[0])。但看起来关系没有被存储。
调用 a.metadata 也会引发 NoMethodError。
我没有设置任何控制器,只有模型和 db/seeds.rb 中的条目。我觉得我一定错过了一些基本的东西,因为,我一直在寻找 StackOverflow 并且没有看到任何解决这个问题的方法。
版本: Mongoid 4.0.0.alpha2 导轨 4.0.1
【问题讨论】:
标签: ruby-on-rails mongoid