我想从模型中提取所有属性,并将数据转换为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;?
答案 0 :(得分:1)
1)不要做self.all.pluck,试试吧
self.all.to_json
或
self.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中运行良好。