Здравствуйте!
Имеется модель
User. В ней
has_many :estates, dependent: :destroy
Модель
Estate. В ней полиморфная связь
has_one :location, as: :locatable, dependent: :destroy
Хочу сделать фильтр
User по
location
Простые вложения фильтровал scope, по типу
scope :type, -> (type) { User.includes(:estates).where("estates.re_type" => type) }
Не могу понять, как добраться через User к Location.
Заранее благодарю!
UPD Миграция Location
class CreateLocations < ActiveRecord::Migration
def change
create_table :locations do |t|
t.string :address
t.decimal :lat, {:precision=>10, :scale=>6}
t.decimal :lng, {:precision=>10, :scale=>6}
t.references :locatable, polymorphic: true, index: true
t.timestamps null: false
end
add_index :locations, [:lat, :lng]
end
end
UPD
Пробовал
1)
User.where(estates: { location: { name: "there" } })
Ошибка
SQLite3::SQLException: no such column: real_estates.locatable_id: SELECT "users".* FROM "users" WHERE "real_estates"."locatable_id" = '---
:address: !ruby/object:Arel::Nodes::BindParam {}'
2)
User.joins(estates: :location).where(location: {address: "London"})
Ошибка
SQLite3::SQLException: no such column: location.address: SELECT "users".* FROM "users" INNER JOIN "estates" ON "estates"."user_id" = "users"."id" INNER JOIN "locations" ON "locations"."locatable_id" = "estates"."id" AND "locations"."locatable_type" = ? WHERE "location"."address" = 'London'