ruby-on-rails 在Rails 7中测试过滤立即加载的数据时出错

wnvonmuf  于 2023-03-13  发布在  Ruby
关注(0)|答案(1)|浏览(212)

当前在我的索引操作中,我将数据加载为:

posts.includes([:user, :status])

注:帖子可以选择属于某个用户。有些帖子没有用户。
然后我根据不同的参数过滤这些帖子,一切都很完美,直到我试图过滤没有用户的帖子。

scope :no_user, -> { where(user_id: nil) }

当我尝试测试浏览器中的行为时,没有显示任何错误,但当使用此特定过滤器发出GET请求时,我的控制器测试(Minitest)失败。

Bullet::Notification::UnoptimizedQueryError
AVOID eager loading detected
  Post => [:user]
  Remove from your query: .includes([:user])

有趣的是,当我从数组中删除:user时,我在其他过滤器测试中得到了完全相反的错误。

USE eager loading detected
  Post => [:user]
  Add to your query: .includes([:user])

注意:如果我尝试使用left_outer_joins(:user),也会得到同样的错误
有没有办法在没有条件语句的测试中只针对这个特定的过滤器删除这个错误?

vu8f3i0k

vu8f3i0k1#

我自己找到了修复方法,只需在config/environments/test.rb中添加以下内容:

config.after_initialize do
    Bullet.add_safelist type: :unused_eager_loading, class_name: "Post", association: :user
  end

相关问题