gpt4 book ai didi

mysql - Rails 4 .where.not

转载 作者:行者123 更新时间:2023-11-29 22:00:28 24 4
gpt4 key购买 nike

pry(main)> Loan.joins(:statistics).where(state: <some states>).where.not(statistics: {state: <some other states>}).order(created_at: "desc").last.statistics.map(&:state)

2015-09-21 20:53:54,423|65310|DEBUG|development| - Loan Load (0.9ms) SELECT `loans`.* FROM `loans` INNER JOIN `statistics` ON `statistics`.`loan_id` = `loans`.`id` WHERE `loans`.`state` IN ('started', 'pending_declined') AND (`statistics`.`state` NOT IN ('prequalified', 'conditionally_approved', '4506t_results_uploaded', 'customer_forms_uploaded', 'ready_for_etran', 'etran_verified', 'forms_to_be_verified', 'forms_verified', 'credit_memo_entered', 'loandoc_generated', 'loandoc_completed', 'loandoc_customer_received_need_signatures', 'signatures_checked_and_uploaded', 'boarded')) ORDER BY `loans`.`created_at` ASC LIMIT 1
2015-09-21 20:53:54,426|65310|DEBUG|development| - Statistic Load (0.3ms) SELECT DISTINCT `statistics`.* FROM `statistics` WHERE `statistics`.`loan_id` = 97
=> ["started", "prequalified", "conditionally_approved", "customer_forms_uploaded", "ready_for_etran", "pending_declined"]

所以,也许我不明白这里发生了什么...我要求 SQL 为我找到一些贷款,其统计数据包含某些值。在此示例中,我的意思是忽略任何具有资格预审统计数据的贷款,但是,正如您从打印输出中看到的那样,Loan#statistics 确实具有资格预审 >,以及我想省略的其他几个州。

有人能解释一下吗?我已经和它斗争了好几个小时了,此时我的头开始旋转。

最佳答案

通过该 ActiveRecord 查询,您可以:

  • 首先,找到一组贷款
  • 下一个,按created_at排序
  • 然后,使用 last 来查找限制为 1 个结果,找到该组中最旧的

因此,您有一个 Loan 实例。

由于您在该方法上调用了 #statistics,我可以推断贷款 has_many :statistics,并且您已找到包含与您找到的 Loan 实例相匹配的外键值的所有统计信息。现在您已经有了一组统计数据。

对于这组统计信息,您已将它们映射到 map 属性。

由于您已加入统计信息,请尝试从查询中删除 .last.statistics。用户将结果集映射到其状态。另外,考虑使用 #includes或#select。

关于mysql - Rails 4 .where.not,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32708154/

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