【发布时间】:2010-10-25 05:07:07
【问题描述】:
我一直在尝试在 Rails 3 中设置单表继承模型,其中父类也包含 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")
我总是收到以下错误:
"TypeError: 无法将 String 转换为 Integer"
我不知道如何解决此问题,并尝试在网上找到解决方案,但无济于事。有 STI 模型经验的人有没有发现任何问题?以下是有关 create 方法的文档的链接,如果它有助于诊断问题: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-create
【问题讨论】:
标签: ruby-on-rails has-many single-table-inheritance