2016-05-23 21 views
1

私はRailsには比較的新しく、ActiveModel:Serializerを初めて使用しました。私はシンプルなシリアライザをセットアップし、それをレールコンソールでテストしてから、続行しています。シリアライザを使用しているようですが、有効なJSON形式を返さないようです。私が働いている(私は学生です)指示から、私はJSONを受け取っているようです。私は過去数時間にわたり研究してきましたが、すべてが無関係か、頭がおかしくなります。ActiveModel :: Serializerが有効なJSONをレールコンソールテストで返さない

マイUserモデル:

class User < ActiveRecord::Base 
    # User has attributes: first_name, last_name, email, password 
    has_many :lists 

    def full_name 
     first_name + " " + last_name 
    end 
end 

マイUserSerializer:

>> User.create(first_name: "Jane", last_name: "Doe", email: "[email protected]") 
>> UserSerializer.new(User.first).as_json 

コンソールが返されます:

=> {"user"=>{:id=>1, :full_name=>"Jane Doe", :email=>"[email protected]"}} 
Railsのコンソールで

class UserSerializer < ActiveModel::Serializer 
    attributes :id, :full_name, :email 

    def full_name 
     object.full_name 
    end 
end 

コマンド

答えて

0

as_jsonは、シリアライズライブラリで後で「シリアライズ」(文字列に変換)することができるRubyハッシュを構築します。

代わりにto_jsonに電話してみてください。このメソッドは、解析できる文字列を返します。

>> User.create(first_name: "Jane", last_name: "Doe", email: "[email protected]") 
>> UserSerializer.new(User.first).to_json 

=> "{\"user\":{\"id\":1,\"full_name\":\"Jane Doe\",\"email\":\"[email protected]\"}}" 

使用JSON.parseバックハッシュに文字列をデシリアライズする:

>> JSON.parse({"user"=>{:id=>1, :full_name=>"Jane Doe", :email=>"[email protected]"}}.to_json) 
=> {"user"=>{"id"=>1, "full_name"=>"Jane Doe", "email"=>"[email protected]"}} 
+0

グレート、ありがとうございました! – Shaina33

関連する問題