ruby-on-rails 是否可以为将应用于子关系的块设置范围?

vc6uscn9  于 2023-05-19  发布在  Ruby
关注(0)|答案(1)|浏览(107)

作用域不适用于子作用域。即:

Book.where(title: some_title).scoping { some_library.books.first }

并没有做我希望的事情。有没有一种方法可以设置一个作用域,并将其应用到块内的子作用域?

0g0grzrc

0g0grzrc1#

下面的代码可能会有帮助。

class Library < ApplicationRecord
  has_many :books

  scope :is_e, { where(electronic: true) }
end

class Book < ApplicationRecord
  belongs_to :library

  scope :with_title, -> (value) { where(title: value) }
  scope :in_e_library, -> { joins(:library).merge(Library.is_e) }
end

Book.with_title(some_title).in_e_library

相关问题