User model
class User < ActiveRecord::Base
has_many :medicalhistory
end
Mdedicalhistory model
class Medicalhistory &l
Well, you are getting back an object of ActiveRecord::Relation, not your model instance, thus the error since there is no method called lastname in ActiveRecord::Relation.
Doing @medicalhistory.first.lastname works because @medicalhistory.first is returning the first instance of the model that was found by the where.
Also, you can print out @medicalhistory.class for both the working and "erroring" code and see how they are different.
One other thing to note, :medicalhistory should be plural as it is a has_many relationship
So your code:
class User < ActiveRecord::Base
has_many :medicalhistory
end
Should be written:
class User < ActiveRecord::Base
has_many :medicalhistories
end
From the Rails docs (found here)
The name of the other model is pluralized when declaring a has_many association.
This is because rails automatically infers the class name from the association name.
If a user only had_one medicalhistory this would be singular as you had written:
class User < ActiveRecord::Base
has_one :medicalhistory
end
I know you already accepted an answer, but thought this would help reduce further errors/confusion.