Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4.0在另一个作用域定义中取消作用域的默认作用域的方法(使用已折旧的\u独占\u作用域)_Ruby On Rails_Ruby On Rails 4_Scope - Fatal编程技术网

Ruby on rails Rails 4.0在另一个作用域定义中取消作用域的默认作用域的方法(使用已折旧的\u独占\u作用域)

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_

这可能是一个非常简单的问题,但我一直在努力理解如何在Rails 4.0中实现这一点。基本上,它是一个基本用户,带有
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
的定义合并,所有问题都会得到解决!为什么要以这种方式设计默认范围?。。。