用户模型

class User < ActiveRecord::Base
  has_many :medicalhistory
end

医学历史模型
class Medicalhistory < ActiveRecord::Base
  belongs_to :user #foreign key -> user_id
  accepts_nested_attributes_for :user
end

错误
undefined method `lastname' for #<ActiveRecord::Relation:0xb6ad89d0>


#this works
@medicalhistory = Medicalhistory.find(current_user.id)
print   "\n" + @medicalhistory.lastname

#this doesn't!
@medicalhistory = Medicalhistory.where("user_id = ?", current_user.id)
print   "\n" + @medicalhistory.lastname #error on this line

最佳答案

好吧,您将返回ActiveRecord::Relation的对象,而不是模型实例,因此出现错误,因为lastname中没有称为ActiveRecord::Relation的方法。

进行@medicalhistory.first.lastname之所以可行,是因为@medicalhistory.first返回的是where找到的模型的第一个实例。

另外,您可以为有效代码和“错误代码”打印出@medicalhistory.class,并查看它们的不同之处。

10-07 20:54