sql >> データベース >  >> NoSQL >> Redis

JSONにシリアル化してRails4.0.3に戻すときに、has_many:throughの関係を維持するにはどうすればよいですか?

    私はあなたとまったく同じシナリオをシミュレートし、次のことを発見しました:

    モデル(投稿)にhas_many throughがある場合は常に 次に、そのモデルのインスタンスを作成する際の関連付け、つまりPost Hashを渡す 例:Post.new( JSON.parse(json) ) またはPost.new(id: 113) 同じレコードを指しているにもかかわらず、Railsはそれらを異なる方法で処理しているようです。

    次のコマンドを以下の順序で実行しました:

    p = Post.last
    p.tags
    p.tags.count
    json = p.to_json
    
    p2 = Post.new( JSON.parse(json) )
    p2.tags
    p2.tags.count   ## Gives incorrect count
    
    p3 = Post.find(JSON.parse(json)["id"])    ### See notes below
    p3.tags
    p3.tags.count   ## Gives the correct count
    

    Hashを直接使用してPostの新しいインスタンスを作成する代わりに、idを使用してデータベースからレコードをフェッチしました jsonの逆シリアル化から取得。この場合、インスタンスp3 およびインスタンスp2 同じ投稿を参照しますが、Railsはそれらを異なる方法で解釈しています。



    1. Redis構成でYii2をセットアップする方法

    2. SQLで値に少なくとも1桁の数字が含まれているかどうかを検出する

    3. MongoDBネストされたグループ?

    4. リストをRedisの構造にネストして、トップレベルを減らすにはどうすればよいですか?