我正在使用Rails 4并在模型中执行左外连接的简化版本。为了便于阅读,我在一些参数中有一些换行符和中间字符串,供我使用的其他开发人员使用。
self.joins('LEFT OUTER JOIN answers
ON questions.id = answers.question_id').
where(test_id: test_id).
where("answers.student_id = ?
OR answers.student_id IS NULL", student_id).
select('questions.*, answers.text
AS answer_text')
当我在最后标记#to_sql时,这将成为以下代码。 (我在示例中为可读性添加了换行符)
"SELECT questions.*, answers.text\n
\t\t\t\t\t\t\t\tAS answer_text
FROM \"questions\"
LEFT OUTER JOIN answers\n
\t\t\t\t\t\t\t\tON questions.id = answers.question_id
WHERE \"tests\".\"test_id\" = 1
AND (answers.student_id = 1\n
\t\t\t\t\t\t\t\tOR answers.student_id IS NULL)"
我担心的是,活动记录是在SQL查询中插入“\ t \ t \ t \ tt”和“\ n”字符。我希望有人可以告诉我这是否会成为一个问题,或者我是否可以安全地将其提交给生产。查询正常运行并通过所有测试,因此目前不是问题。
我可以将参数作为不间断的字符串运行,但那些是最厚的部分。另一个选择是只做原始SQL,但我宁愿不做代码库一致性。
如果没有编辑器中的换行符,这是一个主要的眼睛和厚实的方法调用。
同样的查询表现得像我需要的那样,只是好奇是否会有后果。