我对Rails下失败的现有MySQL表进行了更新。这是相关的控制器代码:
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
生成的SQL的SET
部分是正确的。为什么WHERE
子句设置为.`` IS NULL
?
答案 0 :(得分:14)
在处理没有定义主键的表时遇到了同样的错误。场上有一个独特的钥匙,但没有PK。在模型中设置PK为我修复了它:
self.primary_key = :object_id