Ruby on rails Rails 4.0在另一个作用域定义中取消作用域的默认作用域的方法(使用已折旧的\u独占\u作用域)
这可能是一个非常简单的问题,但我一直在努力理解如何在Rails 4.0中实现这一点。基本上,它是一个基本用户,带有Ruby on rails Rails 4.0在另一个作用域定义中取消作用域的默认作用域的方法(使用已折旧的\u独占\u作用域),ruby-on-rails,ruby-on-rails-4,scope,Ruby On Rails,Ruby On Rails 4,Scope,这可能是一个非常简单的问题,但我一直在努力理解如何在Rails 4.0中实现这一点。基本上,它是一个基本用户,带有user的post应用程序有很多post。此外,在每篇文章中都有一个布尔值:images\u to\u process。它所做的是指示是否所有图像都属于此Post已被延迟的_作业处理。不应显示不完整的帖子,以避免图像加载问题。以下是适用于Rails 3的代码: class Post < ActiveRecord::Base default_scope { where(is_
user
的post应用程序有很多post
。此外,在每篇文章中都有一个布尔值:images\u to\u process
。它所做的是指示是否所有图像都属于此Post
已被延迟的_作业处理。不应显示不完整的帖子,以避免图像加载问题。以下是适用于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) }}
class Postuser{with_exclusive_scope{where(is_deleted:false,user_id:user)}
正如您可能已经注意到的那样,Rails 4中对具有_exclusive _作用域的进行了折旧。我理解使用类方法可以更容易地做到这一点,但我不想放弃作用域可链接和可扩展的便利性。我应该怎么做才能在Rails 4中用_exclusive _scope替换
感谢阅读您应该使用重新扫描
的取消扫描
。有关更多信息,请参见谢谢!然而,似乎unscope和rescope只能在方法中使用,而不能在范围定义部分使用?谢谢。我会尽力让它达到4.1。谢谢这不是问题的答案,而是一个建议。只是不要使用默认的\u范围。在应用程序的整个生命周期中,它造成的麻烦远比它实际解决的要多。使用重缩放或其他技术来删除先前的默认关系似乎并不十分枯燥,确实如此。最初,我仍然选择默认范围,因为我认为在大多数情况下,这是正确的。我不想要求Post.active用于所有正常的Post呼叫。不管怎么说,这似乎应该是一种方法(考虑到范围的语法从3到4到4.1有很多变化),实际上如果scope
不与default\u scope
的定义合并,所有问题都会得到解决!为什么要以这种方式设计默认范围?。。。