【发布时间】:2012-01-24 00:27:43
【问题描述】:
在我的Guest 模型中,我有这个方法可以从关联模型中返回一个 id 列表:
def self.people_list(consultant_id)
# returns an array of ids of people who attended parties for a given consultant
people = self.select(:person_id).joins('INNER JOIN parties ON guests.party_id = parties.id').where('parties.consultant_id = ?', consultant_id).collect{ |g| g.person_id }
end
person_id 是 Guest 模型中的一个字段。但我得到的是一系列 nil。从 rails 控制台我可以看出查询是正确的,并且它返回了正确数量的对象。我只是没有将它们放入数组中。
感谢您的帮助。
P.S.,如果有帮助/重要,顾问有很多派对,有很多客人。来宾有一个 person_id,它连接到 People 表。我正在尝试从 Guest 表中找到所有参加给定顾问聚会的 person_id。
从控制台(更改为如下所述的 rails 关联语法后)
Guest Load (0.3ms) SELECT person_id FROM `guests` INNER JOIN `parties` ON `parties`.`id` = `guests`.`party_id` WHERE (parties.consultant_id = 1)
=> [nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]
【问题讨论】:
-
首先删除“INNER JOIN”并使用 rails 关联,例如Guest(:consultant_id).parties 如果控制台中的行为与应用程序不同,那么您使用的是不同的 ID
标签: ruby-on-rails ruby