私はVendor(id、name、lat、lon、created_at)というモデルを持っています。 そして、現在の緯度と経度からベンダーの距離を見つけることができます。ActiveModelシリアライザに追加フィールドを追加
クエリは、 - 私は{ID、緯度、経度、名前、のcreated_at、距離}として直列化されたオブジェクトを持っていたい
class VendorSerializer < ActiveModel::Serializer
attributes :id,
:lat,
:lon,
:name,
:created_at
def attributes
hash = super
# I tried to override attributes and added distance but it doesn't add
hash[:distance] = object.distance if object.distance.present?
hash
end
end
-
query = "*, ST_Distance(ST_SetSRID(ST_Point(#{lat}, #{lon}), 4326)::geography,ST_SetSRID(ST_Point(lat, lon), 4326)::geography) as distance"
Vendor.select(query)
としてIがシリアライザクラスを有しています。 モデルの属性がアタッチされますが、追加のフィールド/属性、つまりシリアル化されたハッシュに「距離」を追加するにはどうすればよいですか?
これが私に与えていませんが、「距離"jsonで。 –
@ palash-kulkarni:再生できません。私のために働く。 –
私もこれを試しました。しかし、仕事はなかった。私は、選択したクエリで「距離」としたいベンダーモデルの一部ではない、余分な属性を考えています。だから、それは追加されていない –