以json格式从模型获取属性 - Rails

时间:2016-10-13 22:13:53

标签: ruby-on-rails

我想从模型中提取所有属性,并将数据转换为json格式。

我在模型中定义的类:

mdl.rb

C3

返回:

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

我有两个问题:

1)如何让json返回属性名称?即[a:0.0,b:1.0,c:365.0]

2)有没有办法根据除x,y和&amp;之外的所有列提取属性。 ž&#39;?

2 个答案:

答案 0 :(得分:1)

1)不要做self.all.pluck,试试吧 self.all.to_jsonself.all.as_json 这将为您提供您想要的属性名称。

2)您可以使用select,例如:

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

那应该有用

答案 1 :(得分:1)

目前常用的方法是使用ActiveModelSerializers gem。它允许您以管理视图的方式管理json序列化。所以使用它的第一个序列化器将是这样的:

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

你可以使用自动序列化器查找将它呈现给json:

render json: @mdl

ActiveModelSerializers是Rails 5的事实上标准,在Rails 4中运行良好。