Rails 3 Одностое Столовое наследование W / HAS_MANY Вопрос
-
25-09-2019 - |
Вопрос
Я пытался настроить одну модель наследования наследования в рельсах 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.create(:title => "Go Giants")
Я всегда получаю следующую ошибку:
«Типеррера: не может преобразовать строку в целое число»
Я понятия не имею, как решить эту проблему и попытался найти решение в Интернете безрезультатно. Есть ли кто-нибудь, у кого есть опыт работы с ITI модели, видит что-то не так? Вот ссылка на документацию по методу создания, если она поможет при диагностике проблемы:http://api.rubyonrails.org/Classes/activerecord/base.html#method-c-create.
Решение 2
Ошибка была вызвана за счет столкновения с именами. Я использовал имя для одного из моих моментов, называемых «атрибутами», которые вызывали проблему. Намек, который в конечном итоге диагностирован проблема пришла из Документация ассоциации Rails.
Другие советы
Попробуйте переименовать: введите что-то другое, как: article_type
например:
t.string :article_type, :null => false # for STI