gpt4 book ai didi

sql - Rails 4 - 对关联计数的查询大于属性

转载 作者:行者123 更新时间:2023-12-04 16:31:28 25 4
gpt4 key购买 nike

我想做类似“查找 book.pages.count < books.max_pages 的所有图书”之类的操作。

所以模型是:

class Book
has_many :pages
end

class Page
belongs_to :book
end

我知道我可以找到具有一定页数的书籍。例如:

# Get books w/ < 5 pages.
Book.joins(:pages).group("books.id").having("count(pages.id) < ?", 5)

有没有使用动态页数的好方法?例如:

Book.joins(:pages).group("books.id").select(.having("count(pages.id) <= book.max_pages")

如果不是,我总是可以在 Book 模型中存储一些东西(例如 book.is_full = false 直到保存导致它被填满),但是如果 max_pages 得到更新,这有点不太灵活.

最佳答案

你可以像这样创建一个范围:

def self.page_count_under(amount)
joins(:pages)
.group('books.id')
.having('COUNT(pages.id) < ?', amount)
end

更新

如果 max_pagesBook 模型的属性,这应该可以工作。

def self.page_count_under_max
joins(:pages)
.group('books.id')
.having('COUNT(pages.id) < books.max_pages')
end

关于sql - Rails 4 - 对关联计数的查询大于属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32279337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com