ruby-on-rails - 当我使用 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”查询时,我是否应该猜测模型关联丢失了?如何在不丢失允许直接使用相关表对象的关联的情况下获得多条记录?
解决方案
感谢@RobertNubel,我发现问题是没有 author_id 和 Book 模型缺乏验证。
推荐阅读
- deployment - Sharepoint 在线代码存储库和持续部署
- python - 如何检查对象的类型为“dict_items”?
- android - 当应用程序在后台时,带有数据的 FCM Intent 在哪里?
- ruby - Ruby 应用程序的 Dockerfile 中的文件权限问题
- r - 在 lapply 中使用列表中的对象作为函数参数
- java - Wicket 中的弹出窗口(x 可编辑)
- javascript - jQuery ID + 计数
- java - ElasticSearch 6.4:使用 RestHighLevelClient 进行映射
- scala - 无法在模拟行上模拟 getTimestamp 方法
- c# - C# Drawing.Graphics FromImage OutofMemoryException 当传递一个带有 Format16bppGrayScale 的位图