3

我在 ruby​​ 2.0.0 中有一个数组,@temp = [3, 4]我想在 SQLIN语句中使用它。所以我想[, ]删除括号()。

我的 SQL 查询:

SELECT E.id,E.name, CEU.attempt, E.total_mark, CEU.has_attended as attendance, CE.id as categoryexamId, CE.examtype_id as examType, CU.id as categoryuserId, U.name as username

      FROM exams E
      Inner Join categoryexams CE on E.id = CE.exam_id
      Inner Join categoryexamusers CEU on CE.id = CEU.categoryexam_id
      Inner Join categoryusers CU on CEU.categoryuser_id = CU.id
      Inner Join categories C on CE.category_id = C.id
      Inner Join users U on CU.user_id = U.id
      Inner Join examtypes ET on CE.examtype_id = ET.id
      WHERE CE.category_id = #{category_id} AND CEU.has_attended = 1 AND U.id = #{user} AND CE.currentyear = #{academicYear} AND CE.examtype_id = #{examtype}" + (@temp.blank? ? "" : " AND CEU.categoryexam_id NOT IN (#{@temp})") +
      " Group By CE.id;
4

2 回答 2

8

如果您想在 where 查询中将其用作字符串。你可以把它写成:

@temp.join(',')

希望,它会工作。

于 2013-08-18T16:48:05.750 回答
8

使用 Active Record,您可以在使用“哈希条件”格式时直接使用数组,它会自动将其转换为正确的 SQL:

MyModel.where(column: [3, 4])

请参阅关于 Active Record 查询“子集条件”的 Rails 指南2.3.3

于 2013-08-18T17:17:38.017 回答