2016-10-26 6 views
0

を取得するためにキャッシュをレール_idに変更し、なぜ、私はパフォーマンスを最適化するためにRailsのキャッシュを使用したい、これは私のコードです:idは、私が使用したとき、私はブドウやモンゴでのRailsを使用していたデータ

Rails.cache.fetch(cache_key, expires_in: 1.hour) do 
    render_template('chatrooms/info', {chatroom: chatroom, user:current_user, group: chatroom.group}) 
end 

キャッシュ有効ですが、戻りデータが変更されました。

戻りデータは、以前にキャッシュを追加:戻りデータは、キャッシュを追加した後、それ以外の場合は

chatroom: { 
    name: "磁场", 
    id: "573c025cc5ffa353c7000000", 
    owner_id: "56a8b4c9feec620985000000", 
    avatar: "http://o2zuoh5os.qnssl.com/icon_magnet.png" 
} 

chatroom: { 
    name: "磁场", 
    _id: "573c025cc5ffa353c7000000", 
    owner_id: "56a8b4c9feec620985000000", 
    avatar: "http://o2zuoh5os.qnssl.com/icon_magnet.png" 
} 

'ID' フィールドが '_id'

に変更私は何が起こったのか、この問題を解決する方法を知らないのですか?

答えて

1

@windだから基本的にmongoDBはすべてのドキュメントのために_idフィールドを作成します。 mongoidでは、これら具体的に_id属性別名&セッター/ゲッターメソッドへid

これはmongoid-6.0.2/lib/mongoid/fields.rbファイルので

self.aliased_fields = { "id" => "_id" } 
    self.fields = {} 
    self.localized_fields = {} 
    self.pre_processed_defaults = [] 
    self.post_processed_defaults = [] 

    field(
    :_id, 
    default: ->{ BSON::ObjectId.new }, 
    pre_processed: true, 
    type: BSON::ObjectId 
) 

    alias :id :_id 
    alias :id= :_id= 
end 

からのコードスニペット、ID & _idの両方が同じことは、コードが好むれ、ここにそのちょうどされていますどれ。

関連する問題