mercredi 29 juillet 2015

undefined method when accessing attributes of a model (STI)

I have 4 models: Patient, Admin, Doctor, User. Patient, Admin and Doctor extends User.

// patient.rb
class Patient < User
end

// doctor.rb
class Doctor < User
end

// admin.rb
class Admin < User
end

However, I cannot get child-class-specific attributes. When I call, for example patient.fathername, it gives me the error

NoMethodError: undefined method `fathername' for #Patient:0x007fa4c172a188

while I have fathername column in my Patient model.

//schema.rb
create_table "patients", force: :cascade do |t|
t.string   "fathername"
end

Made some research about the problem, and realized that other people who use STI also encountered with this problem. However, I could not understand any of the solutions and source of the problem. What is wrong with STI and getting attributes?




Aucun commentaire:

Enregistrer un commentaire