2017-12-22 8 views
0

私は最初の質問を簡単に突き止める方法は確かではありませんでした。私は、オブジェクトのネストされたハッシュタイプをアクティブなレコードによってPGに格納できるフォームに変換しようとしています。私は宝石「入れ子式屋根」を試しましたが、それを働かせることはできませんでした。列などのシリアライズを試みました...オブジェクト自体は、オブジェクトを含む多次元配列です。私はMD配列を、キーがMD配列の結合されたインデックスを表す構造のネストされたハッシュタイプに変換することは、オブジェクトに直接対応すると考えています。オブジェクトは、JSON変換にとって最も簡単なものです。構造体には多くのデータが含まれているので、PG/ActiveRecordをオフにしている可能性があります。あるいは、構文の重要な部分が欠落している可能性があります。ここでpostgresqlのjson列が値を受け入れず、記憶の後に呼び出されたときにnilを返す

は、そのコールテストし、データベースのエントリを作成するためのコードです:ここで

Turn.create(turn: @counter, board: arrHash.to_json, games_id: 
      @@current_game.id) 
turner = Turn.where(turn:@counter).first 
puts turner.board 

を移行/テーブルです:

class CreateTurns < ActiveRecord::Migration[5.1] 
    def change 
    create_table :turns do |t| 
     t.integer :turn 
     t.json :board, default: "{}" 
     t.references :games, foreign_key: true, index: true 

     t.timestamps 
    end 
    end 
end 

これを格納するための優れた戦略のいずれかですべてのヘルプ、あるいは私が完全に見落としている可能性のある文法的な違いが大いに評価されるだろう。ありがとう!

+0

'where'はリレーションを返します。Turn.where(turn:@counter).to_a'またはTurn.where(turn:@counter).last'などが必要です。 – Anthony

+0

申し訳ありません。最初に、それが私にヒントを与えるかどうか見るためにいくつかの異なることを試みてきました。 –

+0

'turner.border'の出力は何ですか? 'create!'を実行してログを表示できますか? – Anthony

答えて

0

いいえ、問題は、Turnクラスのbelongs_to属性の変数が複数形ではないということでした。これにより、順番が正しく保存されていたことがわかりました。 to_jsonメソッドは、PGへの保存に適しています。アンソニーが私を助けてくれたおかげで、私が実装していた機能を完成させました。

関連する問題