Rails Active Record关联报错:undefined method `temp' for nil:NilClass
问题排查与解决建议
确认当前
@location是否存在关联记录:控制台执行Location.last.recordings.last.temp正常,说明部分Location有Recording,但代码中的@location可能是一条没有任何关联Recording的记录。可以在代码中先判断:if @location.recordings.present? json.temp @location.recordings.last.temp else json.temp nil # 或设置默认值 end或者使用Ruby安全导航操作符直接避免报错:
json.temp @location.recordings.last&.temp检查代码执行上下文:若代码在回调、初始化或事务未提交的场景中运行,可能此时关联的Recording还未持久化到数据库,导致
last返回nil。需确保Recording已成功保存后再访问该属性。预加载关联数据:如果
@location是通过控制器查询得到的,建议使用includes预加载关联的Recording,避免延迟加载时出现数据不一致:@location = Location.includes(:recordings).find(params[:id])
内容的提问来源于stack exchange,提问作者Wrest
相关产品推荐
相关产品推荐

