2

has_many :through, :uniq => true我在 School 对象和通过关系连接的 User 对象之间有一个 ActiveRecord 。

在学校课上,我有一个特定的方法来查询学生:

def students
  self.users.where(educations: {end_date: nil})
end

这似乎正确地只给了我唯一的用户(无重复),但奇怪的是school.students.size给了我一个包含重复记录的计数!但是,如果我查看 school.students 返回的可枚举,它只显示唯一记录。

我尝试在 where 查询的末尾添加 #uniq。这似乎不能解决问题。到目前为止,我唯一的解决方案是使用school.students.compact.size,但这不可能。

顺便说一下,school.users.size给我一个准确的计数。

4

1 回答 1

0

您应该count在 ActiveRecord::Relation 对象上使用,因为它可以对数据库进行计数查询。调用size导致从数据库中获取所有对象,创建一个数组,然后调用size它。不过,这可能无法解决您的问题。

创建另一个协会会产生影响吗?

has_many :students, class_name: User, through: SchoolUsers(?), conditions: {educations: {end_date: nil}}
于 2013-03-18T23:40:51.297 回答