如何禁用一个belongs_to的default_scope?
有没有一种方法来禁用单个belongs_to
关联的default_scope
? 除了一个belongs_to
,我想绕过范围default_scope
是好的。 我熟悉with_exclusive_scope
但我不认为可以与belongs_to一起使用。
有什么build议么?
上下文:我试图让acts_as_revisable中的branch_source
关联指向不是最新的修订( revisable_is_current
为false)。
大概晚了3年,但刚刚遇到同样的问题,Tobias的解决scheme肯定是正确的方向,但Rails 3.2+可以简化。 我唯一不喜欢的就是Document的“硬编码”类名,也许可以使用reflection来活动。
无论如何,这是我所想出的:
class Comment < ActiveRecord::Base # Document has some kind of default_scope belongs_to :document # Ensure document is not scoped, because Rails 3.2 uses modules it's # possible to use simple inheritance. def document Document.unscoped { super } end end
更新 :得到一个通用的解决scheme,基于reflect_on_association https://gist.github.com/2923336
belongs_to :account, -> { unscope(where: :destroyed_at) }
为我工作,Rails 4.1
我自己也有这个问题,下面是我想到的:
class Comment < ActiveRecord::Base belongs_to :document # Document has some kind of default scope # that stops us from finding it # Override getter method for document association def document_with_unscoped # Fetch document with default scope disabled Document.unscoped { document_without_unscoped } end alias_method_chain :document, :unscoped end