【发布时间】:2012-06-21 12:18:42
【问题描述】:
我对在 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?
【问题讨论】:
-
mti是什么?标题与问题内容有何关联? -
mti是我的拼写错误。我已经纠正了。我也更正了标题。这就是我在执行此代码时收到的错误。 -
ObjectName.primary_key返回什么? -
这完全取决于你的
params[:param_type]是什么。因为那部分 SQL 是由这个参数的值填充的。 -
nil,尽管表本身在 2 个 _id 字段上有一个复合 PK。
标签: mysql ruby-on-rails activerecord