Rails 3 Einzeltabelle Erbschaft mit Has_many Frage
-
25-09-2019 - |
Frage
Ich habe versucht, ein einzelnes Tisch -Vererbungsmodell in Rails 3 einzurichten, in dem die übergeordnete Klasse auch eine HASMANY -Beziehung enthält. Leider kann ich es nicht zum Laufen bringen. Hier sind drei Klassen als Beispiel:
class Article < ActiveRecord::Base
has_many :paragraphs, :dependent => :destroy, :autosave => true
end
class Paragraph < ActiveRecord::Base
belongs_to :article
end
class SportsArticle < Article
end
Und hier ist die Migration, mit der dies eingerichtet werden würde:
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
Wenn ich es so eingerichtet habe und versuche, ein neues Sportsartikel zu erstellen, sagen wir Folgendes:
SportsArticle.create(:title => "Go Giants")
Ich bekomme immer den folgenden Fehler:
"TypeError: Die Zeichenfolge kann nicht integer konvertiert werden"
Ich habe keine Ahnung, wie ich dieses Problem beheben kann, und habe versucht, ohne Erfolg online zu finden. Sieht jemand, der Erfahrung mit STI -Modellen hat, etwas falsch? Hier ist der Link zur Dokumentation der Erstellenmethode, wenn sie bei der Diagnose des Problems hilft:http://api.rubyonrails.org/classes/activerecord/base.html#method-c-create
Lösung 2
Der Fehler wurde aufgrund einer Namenskollision verursacht. Ich benutzte einen Namen für eines meiner Modelle, der als "Attribute" bezeichnet wurde, was das Problem verursachte. Der Hinweis, der schließlich das Problem diagnostizierte Dokumentation der Rails Association.
Andere Tipps
Versuchen Sie es zu umbenennen: Geben Sie etwas anderes ein, wie: article_type
z.B:
t.string :article_type, :null => false # for STI