首页 > 解决方案 > 当我使用 where 查询时,Active Record 关联不起作用

问题描述

我有三个表用户,书籍和作者。在这种情况下,一个用户 has_many Books 和每个 Book has_one Author ,所以当我执行类似的查询时

user_book = Books.find_by_user_id(user.id)
user_book.name
> "Moby Dick"
user_book.author.name
> "Herman Melville"

但问题是,当我尝试获取不止一本带有“where”查询的书来迭代每一本书时

user_books = Books.where(user_id: user.id)
user_books[0].name
> "Moby Dick"
user_books[0].author
> NoMethodError: undefined method `author' for nil:NilClass
user_books[0].author.name
> NoMethodError: undefined method `name' for nil:NilClass

当我使用“where”查询时,我是否应该猜测模型关联丢失了?如何在不丢失允许直接使用相关表对象的关联的情况下获得多条记录?

标签: ruby-on-rails

解决方案


感谢@RobertNubel,我发现问题是没有 author_id 和 Book 模型缺乏验证。


推荐阅读