我一直在尝试在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
答案 0 :(得分:0)
尝试重命名:键入其他内容,例如:article_type
例如:
t.string :article_type, :null => false # for STI
答案 1 :(得分:0)
错误是由命名冲突引起的。我正在使用一个名为“属性”的模型的名称,这导致了问题。最终诊断出问题的提示来自Rails Association Documentation。