Вопрос

Я пытался настроить одну модель наследования наследования в рельсах 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top