用户模型
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
,并查看它们的不同之处。