使用 postgresql 的地理编码器问题

Issue with geocoder using postgresql

我有一个名为 room 的模型,在显示视图中我想显示附近的其他房间。

show.html.erb

<div>
   <% for room in @room.nearbys(10) %>
   <%= image_tag room.photos[0].image.url(:medium) %>
   <%= link_to room.listing_name, room %><br>
   (<%= room.distance.round(2) %> miles away)
   <% end %>
</div>

schema.rb

ActiveRecord::Schema.define(version: 20161006135631) do

  # These are extensions that must be enabled in order to support this database
  enable_extension "plpgsql"

  create_table "active_admin_comments", force: :cascade do |t|
    t.string   "namespace"
    t.text     "body"
    t.string   "resource_id",   null: false
    t.string   "resource_type", null: false
    t.string   "author_type"
    t.integer  "author_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.index ["author_type", "author_id"], name: "index_active_admin_comments_on_author_type_and_author_id", using: :btree
    t.index ["namespace"], name: "index_active_admin_comments_on_namespace", using: :btree
    t.index ["resource_type", "resource_id"], name: "index_active_admin_comments_on_resource_type_and_resource_id", using: :btree
  end

  create_table "admin_users", force: :cascade do |t|
    t.string   "email",                  default: "", null: false
    t.string   "encrypted_password",     default: "", null: false
    t.string   "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer  "sign_in_count",          default: 0,  null: false
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.inet     "current_sign_in_ip"
    t.inet     "last_sign_in_ip"
    t.datetime "created_at",                          null: false
    t.datetime "updated_at",                          null: false
    t.index ["email"], name: "index_admin_users_on_email", unique: true, using: :btree
    t.index ["reset_password_token"], name: "index_admin_users_on_reset_password_token", unique: true, using: :btree
  end

  create_table "photos", force: :cascade do |t|
    t.integer  "room_id"
    t.datetime "created_at",         null: false
    t.datetime "updated_at",         null: false
    t.string   "image_file_name"
    t.string   "image_content_type"
    t.integer  "image_file_size"
    t.datetime "image_updated_at"
    t.index ["room_id"], name: "index_photos_on_room_id", using: :btree
  end

  create_table "rooms", force: :cascade do |t|
    t.string   "listing_name"
    t.string   "accommodation_type"
    t.integer  "persons"
    t.integer  "property"
    t.integer  "living_area"
    t.text     "rooms_total"
    t.text     "features_short"
    t.string   "pets"
    t.string   "smoking"
    t.string   "check_in"
    t.string   "check_out"
    t.string   "location"
    t.text     "distance"
    t.text     "features_long"
    t.text     "detailed_description"
    t.text     "house_rules"
    t.string   "address"
    t.text     "video"
    t.integer  "nightly_price"
    t.integer  "hourly_price"
    t.text     "detailed_price"
    t.boolean  "active"
    t.datetime "created_at",           null: false
    t.datetime "updated_at",           null: false
    t.float    "latitude"
    t.float    "longitude"
  end

  create_table "users", force: :cascade do |t|
    t.string   "email",                  default: "", null: false
    t.string   "encrypted_password",     default: "", null: false
    t.string   "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer  "sign_in_count",          default: 0,  null: false
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.inet     "current_sign_in_ip"
    t.inet     "last_sign_in_ip"
    t.datetime "created_at",                          null: false
    t.datetime "updated_at",                          null: false
    t.string   "firstname"
    t.string   "lastname"
    t.string   "provider"
    t.string   "uid"
    t.index ["email"], name: "index_users_on_email", unique: true, using: :btree
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
  end

  add_foreign_key "photos", "rooms"
end

我已经使用 RailsCasts Episode 定位。 不幸的是我收到了这个错误:

我怎样才能完成这项工作?

非常感谢任何有关解决方案的提示!

您的 rooms table 列有 距离

并且您的 SQL 查询正在创建别名 distance.(AS DISTANCE).

因此 PostgreS 引发了不明确的列错误。

此查询由您正在使用的 gem 生成我建议您将列 distance 的列名称更改为其他名称,例如 my_distance 或不会与 gem.

生成的查询冲突的内容