我的模型用户,然后是
has_many :estates, dependent: :destroy
具有多态关联的遗产
has_one :location, as: :locatable, dependent: :destroy
在位置迁移中,我有
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
如何从Location.address过滤或找到用户? 我试过了
User.where(estates: { location: { address: "London" } })
并出现此错误
SQLite3::SQLException: no such column: estates.locatable_id:
SELECT "users".* FROM "users" WHERE "estates"."locatable_id" = '-
--
:address: !ruby/object:Arel::Nodes::BindParam {}'
也许像
User.includes(:estates).where
提前感谢!
答案 0 :(得分:1)
我认为您正在寻找的是使用联接查找用户。
User.joins(estates: :location).where(locations: {address: "London"})
这告诉你的sql调用将用户与庄园和庄园匹配到位置,并仅选择位置为&#34;伦敦&#34;。
的用户。