ruby-on-rails – Active Record的’join’方法背后有什么?
发布时间:2020-12-17 02:31:17 所属栏目:百科 来源:网络整理
导读:语法之间是否存在差异? "Game.joins(:round).where('rounds.league_id = 1')" 和 "Game.joins(:round).where(:rounds = {:league_id = 1})" 第一个产生查询: Game Load (7.5ms) SELECT "games".* FROM "games" INNER JOIN "rounds" ON "rounds"."id" = "ga
语法之间是否存在差异?
"Game.joins(:round).where('rounds.league_id = 1')" 和 "Game.joins(:round).where(:rounds => {:league_id => 1})" 第一个产生查询: Game Load (7.5ms) SELECT "games".* FROM "games" INNER JOIN "rounds" ON "rounds"."id" = "games"."round_id" WHERE (rounds.league_id = 1) 而第二个产生较长的一个: SQL (1.7ms) SELECT a.attname,format_type(a.atttypid,a.atttypmod),d.adsrc,a.attnotnull FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE a.attrelid = '"rounds"'::regclass AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum Game Load (8.8ms) SELECT "games".* FROM "games" INNER JOIN "rounds" ON "rounds"."id" = "games"."round_id" WHERE "rounds"."league_id" = 1 先谢谢大家,我刚加入社区,这是我的第一个问题 解决方法
在第二个日志输出中,您所看到的不是更长的查询,而是ActiveRecord检查架构,以便它可以做它所做的魔术.这种反射在开发过程中经常发生,因此可以自动获取对模式的任何更改,而无需担心重新启动进程(无论是控制台还是Web服务器).
如果你看一下以游戏加载开头的行,这就是你感兴趣的查询发生的地方,它们几乎相同. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |