【发布时间】:2015-06-10 23:44:15
【问题描述】:
所以,我正在使用 Ruby MongoDB 驱动程序,我想像这样插入和对象:
db.insert_one({
'game_id' => @token,
'board' => {
'tiles' => @board.tiles
}
})
@board 是 Board 类的一个实例。
class Board
attr_accessor :tiles
def initialize()
@tiles = [Tile.new, Tile.new]
end
end
和瓷砖
class Tile
def initialize()
@x = 1, @y = 1
end
def to_json(options)
{"x" => @x, "y" => @y}.to_json
end
end
所以最后,'tiles' 字段应该如下所示:
'tiles': [{x:1, y:1}, {x:1, y:1}]
我收到此错误:
undefined method `bson_type' for #<Tile:0x007ff7148d2440>
我正在使用的 gem:'sinatra'、'mongo (2.0.4)' 和 'bson_ext'(所有这些都需要使用 Bundler.require)。谢谢!
【问题讨论】:
-
错误告诉你驱动不知道怎么把
Tile实例放到MongoDB里面,MongoDB不知道怎么处理Tiles没有人会自动调用to_json给你。 -
我尝试调用 to_json,但它会将内容作为字符串(一个 json 字符串)插入,而不是作为数组。
-
to_json返回一个字符串,as_json返回一个哈希。是的,命名有点混乱。抱歉,这不是我最清楚的评论。
标签: ruby mongodb-ruby