2013-09-21 3 views
0

Вопрос Qucik, почему вторая строка кода работает, а первая нет?Rails find_by_sql и параметр для id

Detail.find_by_sql("SELECT * FROM details INNER JOIN players ON players.id = details.player_id WHERE players.team_id = ?", self.id) 
Detail.find_by_sql("SELECT * FROM details INNER JOIN players ON players.id = details.player_id WHERE players.team_id = '#{self.id}'") 

первая строка дает мне ошибку MySQL, похоже, это не передать параметр в SQL

Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1: SELECT * FROM details INNER JOIN players ON players.id = details.player_id WHERE players.team_id = ? 

ответ

0

Вы должны использовать его как это:

Detail.find_by_sql(["SELECT * FROM details INNER JOIN players ON players.id = details.player_id WHERE players.team_id = ?", self.id]) 
+0

спасибо, как я мог не видеть [] в API Doc ^^ – daiikota

+0

@daiikota приветствуются :) – AshwinKumarS

1

find_by_sql опоры только sql-запросы при использовании синтаксиса rails

Вы должны написать свой запрос в синтаксисе sql, например это:

Detail.find_by_sql("SELECT * FROM details INNER JOIN players ON players.id = details.player_id WHERE players.team_id = #{self.id}") 

Или вы также можете найти его в синтаксисе рельсах:

Detail.joins(:player).where("players.team_id = ?", self.id) 
Смежные вопросы