我有一个ActiveRecord实体。当我致电entity.save
时,它会返回true
,entity.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
答案 0 :(得分:1)
通过更改
来工作if defined? entity[k] then
到这个
if defined? entity[k] and k != 'id' then