簡體   English   中英

Rails Active Record .pluck無法使用Geocoder與多態模型一起使用

[英]Rails Active Record .pluck not working with polymorphic model using geocoder

以下代碼行引發錯誤,我不明白為什么。

fav_arr.push(Address.near([@address.latitude, @address.longitude], 5).where(addressable_type: 'User').pluck(:addressable_id))

ActiveRecord :: StatementInvalid:PG :: UndefinedColumn:錯誤:列“距離”不存在

一旦添加.pluck(:addressable_id),它就會引發錯誤,即距離列不存在。

這個工作原理:

Address.near([@address.latitude, @address.longitude], 5).where(addressable_type: 'User').map{ |add|  fav_arr << add.addressable_id }

這是SQL查詢

Address.near([@address.latitude, @address.longitude], 5).where(addressable_type: 'User').to_sql :

: SELECT "addresses"."addressable_id" FROM "addresses" WHERE (addresses.latitude BETWEEN 45.42903640844458 AND 45.57376819155542 AND addresses.longitude BETWEEN -73.68277080563716 AND -73.47627419436283 AND (3958.755864232 * 2 * ASIN(SQRT(POWER(SIN((45.5014023 - addresses.latitude) * PI() / 180 / 2), 2) + COS(45.5014023 * PI() / 180) * COS(addresses.latitude * PI() / 180) * POWER(SIN((-73.5795225 - addresses.longitude) * PI() / 180 / 2), 2)))) BETWEEN 0.0 AND 5) AND "addresses"."addressable_type" = $1 ORDER BY distance ASC

謝謝您的幫助

請嘗試這個

Address.near([@address.latitude, @address.longitude], 5).where(addressable_type: 'User').reorder('').pluck(:addressable_id)

擴展@engineersmnky注釋,near和pluck都會修改select語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM