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

生成されたSQLのSET部分は正しいです。WHERE句がに設定されているのはなぜ.`` IS NULLですか?

4

1 に答える 1

16

主キーが定義されていないテーブルで作業しているときに、同じエラーが発生しました。フィールドには一意のキーが設定されていましたが、PKはありませんでした。モデルにPKを設定すると、修正されました。

self.primary_key = :object_id
于 2012-08-09T16:52:01.903 に答える