我一直试图在Rails 3中设置单表继承模型,其中父类也包含has_many关系。不幸的是我无法让它工作。这里有三个班为例:Rails 3单表继承w/has_many问题
class Article < ActiveRecord::Base
has_many :paragraphs, :dependent => :destroy, :autosave => true
end
class Paragraph < ActiveRecord::Base
belongs_to :article
end
class SportsArticle < Article
end
而这里将用于设置此迁移:
class AddTables < ActiveRecord::Migration
def self.up
create_table :articles do |t|
t.string :type, :null => false # for STI
t.string :title, :null => false
t.timestamps
end
create_table :paragraphs do |t|
t.references :article, :null => false
t.timestamps
end
end
def self.down
drop_table :articles
drop_table :paragraphs
end
end
当我将它设置了这种方式,我尝试创建一个新的SportsArticle ,通过做说以下内容:
SportsArticle.create(:title => "Go Giants")
我总是得到以下错误:
“类型错误:无法转换成字符串整数”
我不知道如何解决这个问题,并试图在网上找到一个解决办法都无济于事。有STI模型经验的人会看到有什么不对吗?这里的链接到文件的创建方法,如果将诊断问题有所帮助: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-create
这没有奏效。在rails文档中,它说你应该命名列“type”来实现STI http://api.rubyonrails.org/classes/ActiveRecord/Base.html – Abe 2010-10-23 19:57:52
感谢porkeypop的响应,它最终最终成为了一种不同类型的命名冲突。 – Abe 2010-10-24 21:08:18