更新:
将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