2010-06-12 3 views
1

я получил эту ошибку:: от параметра в активной записи найти не хорошо спроектировано?

SQLite3::SQLException: no such column: apis.name: SELECT * FROM examples WHERE ("apis"."name" = 'deep') 

мой код

Api.find :all, :from => params[:table_name], :conditions => {:name => 'deep' } 

мне нужно сделать задний конец рельсы приложение, которое будет использоваться в SilverLight применения. одним из требований является получение простых данных из базы данных. Мне нужно иметь возможность запрашивать разные таблицы с тем же кодом (мое приложение имеет 2000 таблиц!)

Я думаю, что для рельсов не имеет смысла вставлять «apis» в предложение WHERE. есть ли какая-то конкретная причина для этого?

ответ

0

Он делает это, поэтому, когда выполняются объединения, предложения where выстраиваются в очередь с колонками правильных таблиц. Это удобно в большинстве случаев, но в вашем конкретном случае возникают проблемы.

Что вы можете сделать, это использовать синтаксис других условий, который не будет добавлять имена таблиц рельсов к атрибутам, но все же санировать входы должным образом.

Api.find :all, :from => params[:table_name], :conditions => ['name = ?','deep'] 
Смежные вопросы