1

更新:
将 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桌子上?

4

1 回答 1

1

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

class Objekt < ActiveRecord::Base
  include Template

  def status
    self.random_column_name || super
  end
end

module Template
  def status
    0
  end
end
于 2013-06-05T18:54:00.150 回答