0

ActiveRecordであるエンティティがあります。呼び出すentity.savetrueentity.new_record?が返さfalseれ、が返されますが、entity.idは0です。エンティティテーブルでは、新しい行は正しい増分IDで挿入されたままです。とても変です。

私のRailsバージョンは3.2.8で、データベースはMysqlで、gem mysql2(0.3.11)を使用しています。私は一日中これに苦労しました...

追加されたコード:jsonはフロントエンドからの文字列です。

        o = JSON.parse(CGI.unescape(json))
        if o.has_key?('cls') then
            @r = o['cls']
            cls = o['cls']
            #create
            if o['action'] == 0 then
                entity = Object.const_get(cls).new
                o.each_pair do |k,v|
                    # entity.respond_to?  check method exist
                    if defined? entity[k] then
                        entity[k] = v
                    end
                end

                r = entity.save!

およびモデル(rails gモデルによって生成):

class Node < ActiveRecord::Base
  attr_accessible :iNodeId, :level, :name, :pNodeId, :stationId, :type
end                    
4

1 に答える 1

1

変えることで働く

if defined? entity[k] then 

これに

if defined? entity[k] and k != 'id' then
于 2012-11-10T15:27:34.183 に答える