У меня есть 4 модели: Patient
, Admin
, Doctor
, User
. Patient
, Admin
и Doctor
распространяется User
.undefined метод при доступе к атрибутам модели (STI)
// patient.rb
class Patient < User
end
// doctor.rb
class Doctor < User
end
// admin.rb
class Admin < User
end
Однако я не могу получить атрибуты, специфичные для дочернего класса. Когда я звоню, например patient.fathername
, он дает мне ошибку
NoMethodError: неопределенный метод `«для Отчество #Patient: 0x007fa4c172a188
в то время как у меня есть fathername
столбец в моей Patient
модели.
//schema.rb
create_table "patients", force: :cascade do |t|
t.string "fathername"
end
Проведено некоторое исследование проблемы, и понял, что другие люди, которые используют ИППП, также столкнулись с этой проблемой. Однако я не мог понять ни одно из решений и источник проблемы. Что не так с ИППП и получением атрибутов?
Что такое STI? Вы создали миграцию для создания таблицы «родители», или вы просто отредактировали «schema.rb»? – eirikir
@eirikir Я правильно создал все модели и дал колонку ** type **, чтобы указать ее тип. STI - одностраничное наследование. –