通过rails 2中的JOIN从多个表中获取记录

时间:2018-02-12 07:49:32

标签: ruby-on-rails postgresql join activerecord ruby-on-rails-2

我的记录设置如下

UserKycScanResults: id, user_kyc_scan_id, match_name  <- belongs to UserKycScan
UserKycScan: id, user_id, created_at                  <- belongs to User
User: id, firstname, lastname

我正在尝试编写一个连接,这样我就可以找到user_kyc_scans表中有条目的用户名和昨天的user_kyc_scan表条目日期以及user_kyc_scan_results表中的match_name(如果存在)。

我试过以下

UserKycScanResult.joins("INNER JOIN user_kyc_scans ON user_kyc_scans.id = user_kyc_scan_results.user_kyc_scan_id
                INNER JOIN users ON users.id = user_kyc_scans.user_id").where("users.name = '#{submitted_first_name}', user_kyc_scans.created_at = #{Date.yesterday} ")

但这种方法不起作用。任何帮助,将不胜感激。 并且加入和where子句不在rails 2上工作

请给我任何解决方案来解决这个问题

感谢。

1 个答案:

答案 0 :(得分:0)

您的内部联接查询是正确的,但在rails 2中,我们必须以这种方式传递联接和条件:

UserKycScanResult.all(:joins => "INNER JOIN user_kyc_scans ON user_kyc_scans.id = user_kyc_scan_results.user_kyc_scan_id 
                                 INNER JOIN users ON users.id = user_kyc_scans.user_id", 
                      :conditions => ["users.name = ? AND user_kyc_scans.created_at = ?", submitted_first_name, Date.yesterday])

参考文件:ruby on rails guides

快乐编码