2016-06-17 4 views
0

Я следующий запрос в письменном виде в SQL:Получить сиквел сгенерированный SQL для создания имен полей без обратных кавычек

Select  * 
From  npt_articles 
Inner Join npt_authors 
Inner Join users 
Inner Join npt_teams 
Where  npt_teams.id In (1) 

и следующий SQL генерируется сиквела самоцвета:

SELECT  * 
FROM  `npt_articles` 
INNER JOIN `npt_authors` 
INNER JOIN `users` 
INNER JOIN `npt_teams` 
WHERE  ('npt_teams.id' IN (1)) 

Первые возвращает результаты , второй - нет, если я удаляю обратные тики, а затем второй, то он генерирует тот же результат, что и первый.

Это код, который генерирует второй SQL:

team_articles = user.npt_teams.to_a.inject({}) {|arts,team| 
    arts.merge({ team.name => 
    NptArticle.join(:npt_authors).join(:users).join(:npt_teams).where('npt_teams.id' => [team.id]).to_a.uniq}) 
    } 

Как получить запрос генерируется без обратных кавычек?

+1

Вы уверены, что обратные тиков являются проблемой, а не 'WHERE ('npt_teams.id' IN (1))'? Обратные тики не должны вызывать проблемы - однако, должны быть одинарные кавычки. – Siyual

+0

ok, тогда как я могу получить сиквел, чтобы сгенерировать его без кавычек? – Thermatix

+0

Не может вам помочь, к сожалению. Я ничего не знаю о 'продолжении'. – Siyual

ответ

1

Вы должны попробовать что-то вроде этого:

.where(:npt_teams__id => [team.id]) 
+0

Это сработало, сменив бит на это также: '.where (" npt_teams.id IN (# {team.id}) ".'. Хотя теперь он заставляет скрипт зависать, он работает в mysqlworkbench ... – Thermatix

 Смежные вопросы

  • Нет связанных вопросов^_^