2012-06-21 5 views
3

У меня есть обновление существующей таблицы MySQL, которая не работает под Rails. Вот соответствующий код контроллера:Rails ActiveRecord Mysql2 :: Ошибка: Неизвестное имя столбца ".

on = ObjectName.find_by_object_id(params[:id]) 
if (on) #edit existing 
    if on.update_attributes(params[:param_type] => params[:value]) 
    respond_to do |format| 
     ... 
end 

Модель класса ObjectName имеет 3 значения (object_id, other_id и prop1). Когда происходит обновление, то SQL сгенерирована выходит в

UPDATE `objectname` SET `other_id` = 245 WHERE `objectname`.`` IS NULL 

В SET часть сгенерированного SQL является правильным. Почему параметр WHERE установлен в .`` IS NULL?

+0

Что такое 'mti' и как название связано с содержанием вашего вопроса? –

+0

'mti' был ошибкой с моей стороны. Я исправил это. Я также исправил название. Это ошибка, которую я получаю, когда этот код вызывается. – CitizenX

+0

Что возвращает 'ObjectName.primary_key'? –

ответ

14

Я столкнулся с той же ошибкой при работе с таблицей без указания первичного ключа. На поле был установлен уникальный ключ, но не ПК. Установка PK в модели исправила его для меня:

self.primary_key = :object_id 
+0

Тим, ты спас мне жизнь. Застрял часами. –

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