活动记录选择返回奇怪的结果

时间:2017-08-24 18:57:36

标签: ruby-on-rails ruby activerecord filter

我不确定为什么从以下查询返回“logo”网址?我不是在寻找那个被退回的人。我试图返回我们可以用来在地图上绘制的结果。

我确实在Contractor模型上安装了一个载波上传器,所以我假设它在那里,但我不知道为什么调用.to_json会导致徽标出现?

这让我困扰了几天。不知道为什么会发生这种情况

查询:

contractors = Contractor.where.not(latitude: nil, longitude: nil).select([:id, :company_name, :latitude, :longitude])

有效记录回复

#<Contractor id: 7441, company_name: "company name", latitude: 41.992063, longitude: -88.430357,>

当我添加.to_json

{"id"=>7441, "company_name"=>"company name", "latitude"=>41.992063, "longitude"=>-88.700357, "logo"=>{"url"=>nil}}

1 个答案:

答案 0 :(得分:1)

由于您只从db中检索id,company_name,lat和long,因此模型中的每个其他字段都将为nil。

为避免在使用to_json时显示其他字段,您可以执行类似

的操作
contractors.to_json(only: [:id, :company_name, :latitude, :longitude])