处理错误 - 未定义的方法,其中 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
。