Он должен отображаться в виде массива комментариев вместо хеша.См. Мой пример ниже.
Также, согласно документам mongoid, используйте новые объявления полей стиля.
comment.rb:
class Comment
include Mongoid::Document
field :name, type: String
field :content, type: String
embedded_in :post
end
post.rb:
class Post
include Mongoid::Document
field :title, type: String
field :text, type: String
embeds_many :comments
end
Консоль Rails:
p = Post.new(:title => "title", :text => "post")
c1 = Comment.new(:name => "Tyler", :comment => "Awesome Comment!")
c2 = Comment.new(:name => "Joe", :comment => "comment 2")
p.comments << c1
p.comments << c2
p.save
Консоль Mongo:
> db.posts.findOne()
{
"_id" : ObjectId("4ecd151d096f762149000001"),
"title" : "title",
"text" : "post body",
"comments" : [
{
"name" : "Tyler",
"comment" : "Awesome Comment!",
"_id" : ObjectId("4ecd1569096f762149000002")
},
{
"name" : "Joe",
"comment" : "comment 2",
"_id" : ObjectId("4ecd157f096f762149000003")
}
]}
Затем, чтобы выполнить запрос, который, я думаю, был "комментарии, опубликованные мной?":
> db.posts.findOne({"comments.name": "Tyler"})
Кроме того, я бы добавил индекс в поле comments.name:
> db.posts.ensureIndex({"comments.name": 1})