Rails - 成功调用ActiveRecord.save后,id仍为0

时间:2012-11-10 14:29:02

标签: ruby-on-rails activerecord save

我有一个ActiveRecord实体。当我致电entity.save时,它会返回trueentity.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 model生成):

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

1 个答案:

答案 0 :(得分:1)

通过更改

来工作
if defined? entity[k] then 

到这个

if defined? entity[k] and k != 'id' then