Может кто-нибудь эксперт Rails пролить некоторый свет на это поведение в Rails 4:Rails, где запрос терпит неудачу при использовании переменной в запросе
>query_string = "agent_id = '1'"
=> "agent_id = '1'"
>Lead.includes('agents').where(query_string).length
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'agent_id' in 'where clause'
>Lead.includes('agents').where(agent_id = '1').length
Lead Load (0.5ms) SELECT `leads`.* FROM `leads` WHERE (1)
LeadsAssignment Load (0.4ms) SELECT `leads_assignments`.* FROM `leads_assignments` WHERE `leads_assignments`.`lead_id` IN (1, 2, 3, 4, 5)
Agent Load (0.5ms) SELECT `agents`.* FROM `agents` WHERE `agents`.`id` IN (1, 2)
=> 5
Эти два запроса должны быть идентичны. Почему один провал, а другой нет?
Спасибо! Чарли
'Lead.includes ('агенты'). Где (agent_id = '1'). Length' не даже действительный синтаксис и не может работать –
Это действительно, он просто не делает то, что вы ожидаете. Он создает новую переменную под названием «agent_id», присваивая ей «1», а затем используя ее для выполнения 'where ('1')' ..., которая действительна, она просто будет соответствовать каждой строке. – gmcnaughton
@gmcnaughton - это место на. Это должно быть предложено в качестве ответа. – jeffdill2