2016-06-18 10 views
0

私のコードでは、JSONからActiveRecordモデルを動的にインスタンス化しようとしています。サンプルJSONは次のとおりです。ruby​​ from_jsonがオブジェクトをインスタンス化する - IDがポピュレートされない

{"id":10,"name":"XYZ"} 

私はルビーからインスタンス化しようとすると:

file_name = "json_file.json" 
method = "name" 
klass = Kernel.const_get(method.classify) 
json = File.read(file_name) 
instance = klass.new.from_json(json) 

しかし、インスタンスはタイプNameで作成されたとき、それはJSONからid値が含まれていません。それは無名ですが、指定したとおりに10にします。

instance.save!を挿入しようとすると、毎回新しいIDが作成されますが、これは私が望むものではありません。

何故その理由が考えられますか?

答えて

0

Railsでは、ActiveRecordはデフォルトでレコードIDの割り当てを行います。そのため、RailsはJSONのこの部分を無視しています。"id":10

ActiveRecordのこのデフォルトの動作をオーバーライドすること(理想的にはそうしてはいけません)、どうすればよいかわかりますが、何かできることがあるかもしれませんが、this questionをチェックしてくださいでる。 This postも話題を明らかにしているかもしれません。がんばろう。

+0

ありがとうございます!しかし、私はこのオブジェクトをActiveRecord基盤とは独立したスタンドアロンオブジェクトとして動作させたいと思っています。 – Sid

+0

あなたは「私はJSONからActiveRecordモデルを動的にインスタンス化しようとしています。したがって、クラスがActiveRecordから継承する場合は、そのクラスにデフォルトが適用されます。 –

関連する問題