2016-10-13 12 views
0

モデルからいくつかの属性を除くすべての属性を取得し、データをjson形式に変換したいとします。json形式のモデルから属性を取得する - Rails

私は私のモデルで定義されたクラス:

mdl.rb

class Mdl< ActiveRecord::Base 
    def self.get_json 
     self.all.pluck(:a, :b, :c).to_json 
    end 
end 

これが返されます。

1)方法:

[[0.0,1.0,365.0]] 

私は2つの質問を持っていますjsonに属性名を返すことはできますか?すなわち、[:0.0、B:1.0、C:365.0]

2) 'のX、Y、Z &を除くすべての列' に基づく属性をプルする方法はありますか?

答えて

1

1)の代わりにself.all.pluckを行うので、あなたが望んでいたように、これはあなたの属性名を与える self.all.to_jsonまたは self.all.as_json を試してみてください。

2)あなたは、たとえば、選択し使用することができます。

self.all.select(:a, :b, :c) 

+0

ありがとう!これを使用して、私は他の属性を持つid:nullを取得していますが、削除する方法はありますか? [{"" id ":null、" a ":1.0、b:1.0、c:365.0}] – Adam12344

+0

あなたは完全にIDを取り除きたいですか?またはid値も持っていますか? id値が必要な場合は、選択したIDにidを追加できます。 – jhack

1

共通のアプローチを動作する必要があることは、現在、そのためのActiveModelSerializers gemを使用することです。ビューを管理するのと同じ方法でjsonのシリアル化を管理することができます。

class MdlSerializer < ActiveModel::Serializer 
    attributes :a, :b, :c 
end 

、あなたはこのような自動シリアライザ・ルックアップとJSONにそれをレンダリングすることができるようになります:だからを使用して最初のシリアライザはこのようになりますRailsの5のためのデファクトスタンダードは

render json: @mdl 

ActiveModelSerializersですRails 4でうまくいきます。

+0

これを読んで、ありがとう。 APIを作成した場合や、rails-apiが別のものを使用している場合は、これを使用しますか? – Adam12344

+1

Rails-apiの著者AMSを使用して[推奨](https://github.com/rails-api/rails-api#serialization)を作成してください。 –

関連する問題