我有3个型号:
class Company
has_many :products
has_many :variants, through: :products
end
class Product
acts_as_paranoid
belongs_to :company
has_many :variants
end
class Variant
acts_as_paranoid
belongs_to :product
end
我正在使用偏执狂宝石,为每个模型添加默认范围:
default_scope { where deleted_at: nil }
当我尝试进行查询时:
company.variants.includes(:product).references(:products).where('products.name ilike ?', "%test%")
我收到错误:
PG :: UndefinedTable - 错误:对表"产品"的FROM子句条目的无效引用 第1行:... ucts_variants"。" id" ="变体"。" product_id" AND"产品" ... ^ 提示:也许您打算引用表别名" products_variants"。
完整查询:
SELECT COUNT(*)FROM" variants" INNER JOIN"产品" " products_variants" ON" products_variants"。" id" ="变体"。" product_id" AND"产品"。" deleted_at" IS NULL INNER JOIN"价格" ON"价格"。" variant_id" ="变种"。" id" INNER JOIN"产品" ON"变体"。" product_id" ="产品"。" id"在哪里"变种"。" deleted_at" IS NULL和"产品"。" deleted_at" IS NULL和"产品"。" company_id" = $ 1
如果我从Product和Variant模型中删除acts_as_paranoid,它可以正常工作。我猜表中的条件以某种方式导致AR创建表别名。这是rails中的错误吗?我该如何解决?感谢。