Rails 4包括未绑定的默认关联范围

时间:2017-06-25 16:21:51

标签: ruby-on-rails

说我有这个设置:

在模特书中:

default_scope -> { where(english: true) }
scope :english_author_book, -> (book_ids) {includes(:book).where({ books: { id: book_ids } })}

模特作者:

Book

我尝试了各种各样的东西,但我无法删除'positions'.'published' = 1的默认范围:has_many :authors, dependent: :destroy, inverse_of: :book始终在查询中

有没有办法解决这个问题?谢谢!

协会:

在模特书中:

belongs_to :book, :inverse_of => :authors

我是模特作者:

{{1}}

很抱歉,这个例子似乎不切实际,但我不能在这里发布完整的代码:/

1 个答案:

答案 0 :(得分:2)

您可以使用unscoped删除默认范围。可用文档here.

Book.unscoped.english_author_book(ids)

但是,我非常高度压力不足强烈建议你不要使用默认范围。它们非常不灵活,因为你已经发现,难以处理,而且几乎总是一个坏主意

将默认范围转换为正常范围,这样您就可以执行Book.published,并且您的代码会更好。