我的控制器上有AR
areas = WaterQuality.select(:area_id, :area).distinct
问题是,结果总是id
与area_id
和area
一起。我必须这样做才能从结果中删除id
。
areas = WaterQuality.select(:area_id, :area).distinct
new_areas = []
areas.each do |area|
new_area = {
:area_id => area.area_id,
:area => area.area
}
new_areas << new_area
end
respond_with(new_areas)
我将回复设为respond_to :xml, :json
如何只使用我定义的2个属性而没有任何其他属性的结果?
答案 0 :(得分:0)
对我来说可能有点过头了,但我刚刚开始使用ActiveModel::Serializer
并且我对此非常满意。
class WaterQualityDistinctSerializer < ActiveModel::Serializer
attributes :area_id, :area
end
答案 1 :(得分:0)
你可以尝试:
WaterQuality.all.map { |record| record.slice(*%w(area_id area)).symbolize_keys }
甚至:
WaterQuality.all.map { |record| record.slice(*%w(area_id area)) }
这将在控制台中返回略有不同的哈希,但是相同的json或xml。
答案 2 :(得分:0)
你可以试试这个 -
results = WaterQuality.select(:area_id, :area).distinct.as_json
results_without_id = results.each {|h| h.delete("id")}
这会返回一个带键/值对的哈希数组。
希望它有所帮助!