Rails activerecord返回错误的结果

时间:2013-06-03 17:50:43

标签: ruby-on-rails json rails-activerecord

我正在开发一个简单的rails应用程序,我有一个返回最后创建的列详细信息的自定义方法

def getid
    @b_id = params[:bid]
    @log_id = Log.where("bid = ?",@b_id).last.to_json
    respond_to do |format|
        format.html{render :text => @log_id}
        format.json{render :json => @log_id}
    end
end

该列在后端运行以下查询

Log Load (0.2ms)  SELECT `logs`.* FROM `logs` WHERE (bid = 'B01') ORDER BY `logs`.`logid` DESC LIMIT 1

相应的列值为id:3,logid:20002

json返回的是{u'id':u'20002,u'logid':u'20002'}

我的问题:

  1. 为什么rails会为每个JSON元素添加u
  2. 为什么id返回20002而不是3? (id是自动递增,是唯一键,logid是主键)
  3. 编辑:

    我发现字符u正在python端添加,因为它们是unicode字符串并且如此处所示摆脱它

1 个答案:

答案 0 :(得分:0)

您无需在此行中的对象上调用to_json

@log_id = Log.where("bid = ?",@b_id).last.to_json

只是原始对象没问题。

@log_id = Log.where("bid = ?",@b_id).last

因为当您调用render json: @obj时,会有一个将obj转换为json的操作。不需要重复。