Ruby on rails 无法访问不直接从ActiveRecord::Base下降的模型

Ruby on rails 无法访问不直接从ActiveRecord::Base下降的模型,ruby-on-rails,activerecord,inheritance,Ruby On Rails,Activerecord,Inheritance,我已将一个Rails 2.3.14项目转换为Rails 3.2.2 我在处理不直接从ActiveRecord::Base降级的表时遇到问题 我有一个定义如下的模型: class PauaServiceTable < ActiveRecord::Base def self.abstract_class? true end .. .. end 此代码在Rails 2.3.14中运行良好,但现在在转换到3.2.2后失败尝试在类PauaServic

我已将一个
Rails 2.3.14
项目转换为
Rails 3.2.2
我在处理不直接从
ActiveRecord::Base降级的表时遇到问题

我有一个定义如下的模型:

class PauaServiceTable < ActiveRecord::Base
    def self.abstract_class?
       true
    end
    ..
    ..
 end

此代码在
Rails 2.3.14中运行良好,但现在在转换到
3.2.2后失败尝试在
类PauaServiceTable中设置
@abstract\u class=true

---编辑

由于某些原因,表名称为空,请尝试以下操作:

class Lookup < PauaServiceTable
  set_table_name 'lookups'
end
类查找
我可以用以下代码重现您的错误:

class PauaServiceTable < ActiveRecord::Base
  def self.abstract_class?
    true
  end
end

class Lookup < PauaServiceTable
end
类PauaServiceTable
但是,以下工作:

class PauaServiceTable < ActiveRecord::Base
  @abstract_class = true
end

class Lookup < PauaServiceTable
end


l= Lookup.new
+----+------------+------------+
| id | created_at | updated_at |
+----+------------+------------+
|    |            |            |
+----+------------+------------+
类PauaServiceTable
尝试在
类PauaServiceTable
中设置
@abstract\u class=true

---编辑

由于某些原因,表名称为空,请尝试以下操作:

class Lookup < PauaServiceTable
  set_table_name 'lookups'
end
类查找
我可以用以下代码重现您的错误:

class PauaServiceTable < ActiveRecord::Base
  def self.abstract_class?
    true
  end
end

class Lookup < PauaServiceTable
end
类PauaServiceTable
但是,以下工作:

class PauaServiceTable < ActiveRecord::Base
  @abstract_class = true
end

class Lookup < PauaServiceTable
end


l= Lookup.new
+----+------------+------------+
| id | created_at | updated_at |
+----+------------+------------+
|    |            |            |
+----+------------+------------+
类PauaServiceTable
是单个表的
PauaService表
查找
模型吗

如果是这样,那么您的
PauaServiceTable
模型应该有表名,并且
查找
表应该自动获得它。您还可以查看
单表继承


如果不是,则表示两个模型用于两个表,为什么
Lookup
应该继承
PauaServiceTable
?您可能需要在这两个
模型
s之间建立一个关系(
有许多
有一个
等)。

是单个表的
PauaService table
Lookup
模型吗

如果是这样,那么您的
PauaServiceTable
模型应该有表名,并且
查找
表应该自动获得它。您还可以查看
单表继承


如果不是,则表示两个模型用于两个表,为什么
Lookup
应该继承
PauaServiceTable
?可能您需要在这两个
模型
s之间建立关系(
有许多
有一个
等)。对于Rails 3.2.1+,我相信您需要

class PauaServiceTable < ActiveRecord::Base
  self.abstract_class = true
end
类PauaServiceTable
有关Rails 3.2.1+,请参见

,我相信您需要

class PauaServiceTable < ActiveRecord::Base
  self.abstract_class = true
end
类PauaServiceTable
请参见

您是正确的@abstract_class=true确实有效。我发布的代码并不完全准确。该表比ActiveRecord::Base低两层,因此我需要将@abstract\u record=true放在两个父类中。您是对的@abstract_class=true确实有效。我发布的代码并不完全准确。该表比ActiveRecord::Base低两层,因此我需要将@abstract\u record=true放在两个父类中。不,我不想要STI,这就是我希望父类是抽象的原因。不,我不想要STI,这就是我希望父类是抽象的原因。