Rails 3单表继承w / has_many问题

时间:2010-10-22 21:40:16

标签: ruby-on-rails has-many single-table-inheritance

我一直在尝试在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转换为整数”

我不知道如何解决这个问题,并尝试在线寻找解决方案无济于事。有STI模型经验的人有没有看错?以下是创建方法文档的链接,如果它有助于诊断问题: http://api.rubyonrails.org/classes/ActiveRecord/Base.html#method-c-create

2 个答案:

答案 0 :(得分:0)

尝试重命名:键入其他内容,例如:article_type

例如:

t.string      :article_type,      :null => false    # for STI

答案 1 :(得分:0)

错误是由命名冲突引起的。我正在使用一个名为“属性”的模型的名称,这导致了问题。最终诊断出问题的提示来自Rails Association Documentation