ruby-on-rails – Rails 4.0在另一个范围定义中解除default_scope的方法(with_exclusive_scope折旧)

这可能是一个非常简单的问题,但我一直在努力了解如何在Rails 4.0中完成它.基本上,它是用户has_many Post的基本用户和帖子应用程序.而且,在每个帖子中都有一个布尔值:images_to_process.它的作用是指示所有图像是否属于此帖子已被delayed_jobs处理.不应显示不完整的帖子以避免图像加载问题.这是适用于Rails 3的代码:

class Post < ActiveRecord::Base
  default_scope { where(is_deleted: false, images_to_process: 0) }
  scope :everything, -> user {with_exclusive_scope { where(is_deleted: false, user_id: user) }}

您可能已经注意到,在Rails 4中对with_exclusive_scope进行了折旧.我理解使用类方法可以更容易地做到这一点,但我不想放弃可链接和可扩展的范围的便利性.我该怎么做才能替换Rails 4中的with_exclusive_scope?

谢谢阅读

最佳答案 你应该使用不可见的rescope.有关更多信息,请参见
http://guides.rubyonrails.org/active_record_querying.html#overriding-conditions

点赞