我不确定它是否为活动记录错误。 还是有办法做,明确地包含和禁用左外部连接策略。 这里是我的情况:奇怪的左外连接包括急切的导轨加载3
鉴于关键字是 'ABC' 没有 '点'
Post.where(:name => "abc").includes(:author)
有作为正常
Post Load (0.8ms) SELECT `posts`.* FROM `posts` WHERE `posts`.`name` = 'abc'
Author Load (0.4ms) SELECT `authors`.* FROM `authors` WHERE `authors`.`id` IN (1)
鉴于关键字设置两个sql语句是“ABC。 “用'点'
Post.where(:name => "abc.").includes(:author)
该SQL使用左外部连接策略,这是令人困惑。
SELECT `posts`.`id` AS t0_r0, `posts`.`name` AS t0_r1, `posts`.`author_id` AS t0_r2, `posts`.`created_at` AS t0_r3, `posts`.`updated_at` AS t0_r4, `authors`.`id` AS t1_r0, `authors`.`created_at` AS t1_r1, `authors`.`updated_at` AS t1_r2
FROM `posts` LEFT OUTER JOIN `authors` ON `authors`.`id` = `posts`.`author_id`
WHERE `posts`.`name` = 'abc.'
我知道有包括与LEFT OUTER实现预先加载JOIN策略时,有对联想条件,像
Post.includes(:author).where(:authors => {:name => 'zhougn' })
但在我的测试案例,有没有这样的条件。基本上,Multi-SQL策略和LEFT OUTER JOIN策略都可以给我正确的结果,但是当Posts和Authors存储在不同的数据库中时,LEFT OUTER JOIN策略将失败。
我有同样的问题:http://stackoverflow.com/questions/16095252/rails-find -method-select-columns-from-include-table-parameter/ – user1322092 2013-04-19 02:47:43
see here http://stackoverflow.com/questions/5199235/activerecord-query-changing-when-a-dot-period-is-in-condition-值 – user1322092 2013-04-19 02:54:29