首页 > 解决方案 > 具有命名空间模型的多态关联查找类名称

问题描述

我有一个Project模型。

class Project < ActiveRecord::Base
  has_many :foos, as: :target # polymorphic
end

我还应用了命名空间模式来扩展Project,供管理员操作:

class Admin::Project < Project
  def action_for_admin; end
end

这主要用于管理控制器。

然而since Projecthas many foos,这是一个多态关联。Admin::Project无法正确找到关联。

调用Admin::Project.first.foos给出了这个 SQL:

SELECT "foos".* FROM "foos" WHERE "foos"."target_id" = $1 AND "foos"."target_type" = $2  [["target_id", 1], ["target_type", "Foo::Project"]]

target_type搜索Admin::Project,但它实际上包含"Project"

有没有办法Admin::Project一起Project使用多态关联?

标签: ruby-on-rails

解决方案


推荐阅读