Ruby on rails 带默认作用域的急加载关联导致表别名不正确
我有3种型号:Ruby on rails 带默认作用域的急加载关联导致表别名不正确,ruby-on-rails,postgresql,activerecord,Ruby On Rails,Postgresql,Activerecord,我有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 我使用的是paranoia gem,它为
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
我使用的是paranoia gem,它为每个模型添加了一个默认范围:
default_scope { where deleted_at: nil }
当我尝试执行查询时:
company.variants.includes(:product).references(:products).where('products.name ilike ?', "%test%")
我得到一个错误:
PG::UndefinedTable-错误:对表产品的FROM子句条目的引用无效
第1行:…ucts_variants.id=variants.product_id和产品。。。
^
提示:您可能想引用表别名products\u变量
完整查询:
选择COUNT*FROM variants内部连接产品产品产品产品产品产品上的变体。id=variants.product\u id和products.deleted\u at为空价格上的内部连接价格。variant\u id=variants.id内部连接产品上的变体。product\u id=products.id,其中variants.deleted\u at为空,products.deleted\u at为空,products.company\u id=一美元
如果我从产品和变型模型中删除了acts_as_paranoid,它就可以正常工作。我猜表上的条件会导致AR创建一个表别名。这是rails中的一个bug吗?我怎样才能修好它?谢谢