Неправильное количество усложнения переменных связывания в Ruby - PullRequest
2 голосов
/ 30 ноября 2010

У меня есть таблица, в которой я получаю все списки таблиц через функцию поиска Ruby.

conditions = [Project.in_used_projects(:alias => "projects") + " AND name LIKE ? test"]
projects = Project.find(:all, :conditions => conditions)

Но в тот момент, когда я добавляю «И имя нравится, как?», Я получаю неверное количество переменных связывания. Функция Project.in_used_projects возвращает значение: projects.status = 2

Я не могу просто изменить Project.in_used_projects на project.status = 2, потому что значение отличается для каждого проекта. Я получаю ошибку:

wrong number of bind variables (0 for 1) in: (projects.status = 2) AND name LIKE ? test

Я знаю, что для привязки переменных формат должен быть: (параметр, параметр, переменная, переменная), но мне нужно, чтобы он был (параметры, переменная, параметр, переменная)

Есть идеи?

1 Ответ

2 голосов
/ 30 ноября 2010

Мне кажется, вы делаете неверное количество переменных связывания.У вас есть 1 знак вопроса, но 0 переменных привязки.Предполагая, что вы ищете имя с «test» где-то в нем, вам нужно поместить «test» в качестве переменной связывания или жестко закодировать его следующим образом (0 переменных связывания, 0 слотов):

[Project.in_used_projects(:alias => "projects") + " AND name LIKE '%test%'"]

Или вот так (1 переменная привязки, 1 слот):

[Project.in_used_projects(:alias => "projects") + " AND name LIKE ?", '%test%']
...