gpt4 book ai didi

ruby-on-rails - Rails 4 ActiveRecord has_many 长度条件

转载 作者:数据小太阳 更新时间:2023-10-29 08:08:28 25 4
gpt4 key购买 nike

这个问题看起来很简单,但不知何故我无法使用 ActiveRecord 查询解决这个问题:

我有 2 个具有一对多关系的类

class Student

belongs_to :school

end

class School

has_many :students, inverse_of: :school

end

我想创建一个范围来获取所有有学生的学校(换句话说,他们的学生集合大小大于 0)。

我知道如何用 SQL 编写此代码,但 ActiveRecord 让我大吃一惊。我确实设法通过这一行实现了这种行为:

School.joins(:students)

但我仍然想知道在哪里可以指定条件,例如:

School.where("students.length > ?", 0)

最佳答案

不是对您的实际问题的直接回答,而是一个替代方案,但是您可以使用 rails 中的“counter_cache”功能大大提高关联计数的性能:

class Student
belongs_to :school, :counter_cache => true

您还需要向 schools 表添加一个“students_count”列,默认值为 0。然后,当创建/删除关联时,此计数器会自动更新并允许像这样的简单查询:

School.where('students_count > ?, 0)

关于ruby-on-rails - Rails 4 ActiveRecord has_many 长度条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26976891/

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