说我有这个设置:
在模特书中:
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}}
很抱歉,这个例子似乎不切实际,但我不能在这里发布完整的代码:/
答案 0 :(得分:2)
您可以使用unscoped
删除默认范围。可用文档here.
Book.unscoped.english_author_book(ids)
但是,我非常高度压力不足强烈建议你不要使用默认范围。它们非常不灵活,因为你已经发现,难以处理,而且几乎总是一个坏主意
将默认范围转换为正常范围,这样您就可以执行Book.published
,并且您的代码会更好。