多表继承,无法从子类访问列



更新:
将table_name更改为 self.table_name = 似乎说服了 rails 使用正确的表。

然而,我现在遇到了这些奇怪的错误

   Mysql2::Error: Unknown column 'templates.deleted_at' in 'where clause': SELECT `objekts`.* FROM `objekts`  WHERE (`templates`.`deleted_at` IS NULL)

原始问题:

我有一个模板和一个 Objekt:

class Template < ActiveRecord::Base
  def status; 0; end # Template doesn't have a status column, so define default
end
class Objekt < Template
  table_name = "objekts" # there is a status column in this table
end

但是当我这样做时,Objekt.new.attributes控制台中,它只列出了Template对象的属性,并没有列出任何Objekt

Template上的每列在Objekt中也可用,但Objekt有额外的10列(主要是标志(

这是怎么回事?为什么 Rails 没有将Objekt类连接到objekts表?

参考上面的评论,当我提到组合而不是继承时,我在想这样的事情......

class Objekt < ActiveRecord::Base
  include Template
  def status
    self.random_column_name || super
  end
end
module Template
  def status
    0
  end
end

相关内容

  • 没有找到相关文章

最新更新