3

我对在 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

生成的SETSQL 部分是正确的。为什么将WHERE子句设置为.`` IS NULL

4

1 回答 1

16

在使用未定义主键的表时,我遇到了同样的错误。现场设置了唯一密钥,但没有 PK。在模型中设置 PK 为我修复了它:

self.primary_key = :object_id
于 2012-08-09T16:52:01.903 回答