Trilhos 3 herança de mesa única com pergunta has_many
-
25-09-2019 - |
Pergunta
Eu tenho tentado configurar um modelo de herança de uma única tabela no Rails 3, no qual a classe pai também contém um relacionamento Has_Many. Infelizmente, não consigo fazer funcionar. Aqui estão três classes como exemplo:
class Article < ActiveRecord::Base
has_many :paragraphs, :dependent => :destroy, :autosave => true
end
class Paragraph < ActiveRecord::Base
belongs_to :article
end
class SportsArticle < Article
end
E aqui está a migração que seria usada para configurar isso:
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
Quando eu o configurei dessa maneira e tento criar um novo SportsAtticle, digamos ao fazer o seguinte:
SportsArticle.create(:title => "Go Giants")
Eu sempre recebo o seguinte erro:
"TypeError: não é possível converter string em número inteiro"
Não tenho ideia de como corrigir esse problema e tentei encontrar uma solução on -line sem sucesso. Alguém que tem experiência com os modelos STI vê algo errado? Aqui está o link para a documentação sobre o método Create, se ele ajudar a diagnosticar o problema:http://api.rubyonrails.org/classes/activerecord/base.html#method-c-create
Solução 2
O erro estava sendo causado devido a uma colisão de nomeação. Eu estava usando um nome para um dos meus modelos chamados "Atributos", o que estava causando o problema. A dica que acabou diagnosticando o problema veio do Documentação da Associação de Rails.
Outras dicas
Tente renomear: Digite para outra coisa, como: Artigo_type
por exemplo:
t.string :article_type, :null => false # for STI