у меня есть человек модель, я хочу, чтобы подключиться к нескольким адресам (main_address, work_address и т.д.)рельсов 4 миграции один человек несколько адресов: ActiveRecord ошибка STI
В приложении/модели/person.rb:
class Person < ActiveRecord::Base
belongs_to :main_address, class_name: :Address, foreign_key: :main_address_id
belongs_to :work_address, class_name: :Address, foreign_key: :work_address_id
belongs_to :invoice_address, class_name: :Address, foreign_key: :invoice_address_id
belongs_to :further_address, class_name: :Address, foreign_key: :further_address_id
end
И адрес модель:
class Address < ActiveRecord::Base
belongs_to :person
end
адрес миграции:
class CreateAddresses < ActiveRecord::Migration
def change
create_table :addresses do |t|
t.string :street
t.string :zip
t.string :city
t.string :country
t.string :lockbox
t.string :type
t.references :person, index: true, foreign_key: true
t.timestamps null: false
end
end
end
приложения/модель/main_address.rb:
class MainAddress < Address
end
Когда я пытаюсь сохранить адрес в рельсах консоли (люди с идентификатором 1 уже был создан):
2.2.1 (main):0 > main_address = Address.create(type: "main_address", street: "Schumannstr.15", zip: "D-53113", city: "Bonn", country: "Germany", person_id: 1)
Я получаю ошибку :
ActiveRecord::SubclassNotFound: Invalid single-table inheritance type: main_address is not a subclass of Address
Что я делаю неправильно?
У вас есть класс, определенный для каждого типа main_address, work_address и т. Д.? – Phil
Да, я забыл упомянуть их. Я обновил свой пост. – StandardNerd