处理错误 - 未定义的方法,其中 Array0x000000071923f8

有时我们想对返回的记录集合使用 where 查​​询,这不是 ActiveRecord::Relation.Hence 我们得到上述错误,因为 Where 子句知道 ActiveRecord 而不是 Array

使用 Joins 有一个精确的解决方案。

示例 : -

假设我需要找到所有用户配置文件(UserProfile),这些配置文件是活动的,而不是 id = 10 的用户(User)。

UserProfiles.includes(:user=>:profile_pictures]).where(:active=>true).map(&:user).where.not(:id=>10)

所以上面的查询将在 map 之后失败,因为 map 将返回 array,这将不适用于 where 子句。

但是使用连接,会使它工作

UserProfiles.includes(:user=>:profile_pictures]).where(:active=>true).joins(:user).where.not(:id=>10)

由于 joins 将输出类似 map 的类似记录,但它们将是 ActiveRecord不是 Array