2014-05-14 70 views
1

我剛剛在Rails 4和Mongoid 4 beta中啓動了一個新項目,並且我在Mongoid 3中使用了很多舊的行爲工作了。Rails 4 + Mongoid 4:Model.only(「field」)。to_a不像以前那樣工作

在我寫Model.only("field").to_a之前,我會得到一個包含idfield的數組,所有其他字段都設置爲null。

如果我嘗試做這Mongoid 4,我得到:(Object doesn't support #inspect)

Model.only("field").map {|e| e.field}工作雖然不如以前。 id不包含,我得到ActiveModel::MissingAttributeError如果我嘗試訪問該ID。

我知道我可以使用Model.pluck("field"),但這不會返回文檔數組。

這些變化是真實還是我錯過了什麼?

編輯: 正如我寫這篇文章,我試過包括id,它的工作。即。 Model.only("id", "field").to_a像以前一樣工作,但我的問題仍然有效。現在是否必須包含id才能獲得一組documents

回答

0

這是一個在Mongoid 4上的新行爲。正如你所說的,你可以添加「id」字段到唯一的方法,它應該工作。你也可以使用pluck方法獲取你想要的字段和數組。類似於:

Model.all.pluck(「id」,「field」)。正如你所說,你已經知道採摘,這就是要走的路。

歡呼聲。