2013-12-19 18 views
0

当我用我的应用程序搜索文本时,它会返回一个像这样的哈希成功,但结果都是原始哈希。如何将对象映射到来自Mongoid文本搜索的原始数据?

{"queryDebugString"=>"xxx||||||", "language"=>"english", "results"=>[{"score"=>1.1, "obj"=>{"_id"=>BSON::ObjectId('52b308a85a686916c9410000'), "_type"=>"Note", "occurred_on"=>2013-12-19 00:00:00 UTC, "title"=>"xxx", "type"=>"other", "description"=>"yyy zzz"}}], "stats"=>{"nscanned"=>1, "nscannedObjects"=>0, "n"=>1, "nfound"=>1, "timeMicros"=>57}, "ok"=>1.0} 

如何在结果上映射模型对象?目前我使用.new方法,但#persisted?是错误的。

def self.search(text) 
    mongo_session.command(text: collection_name.to_s, search: text.to_s, filter: all.selector)['results'].map { |row| new row['obj'] } 
end 

回答

0

提供的所有数据您所需的对象,我只是通过向@persisted的新模式分配真正解决了这个问题。

0
your_data = JSON.parse(text) 

它返回一个哈希值。

YourObject.new(your_data) 

它建立与您的字符串

+0

这就是我正在做的。但是这意味着它的“#persisted?”是错误的,这应该是真的。 –

+0

您能否请您说明您正在做什么样的请求。 'YourObject.where()'? – jgburet

相关问题