2012-02-07 37 views
2

Rails 3.2.1有一個奇怪的問題。使用icky列名與遺留數據庫一起工作,我試圖在我的模型中清理它們。下面的模型在HTML工作正常,但用JSON響應或XML拋出一個stack level too deep錯誤:Rails 3.2中的堆棧溢出異常ActiveRecord

class Order < ActiveRecord::Base 
    set_table_name 'ordersum' 
    set_primary_key 'ordernbr' 

    alias_attribute 'id','ordernbr' 
    alias_attribute 'customer_id', 'custid' 
    alias_attribute 'shipping_name', 'sname' 
    alias_attribute 'shipping_company','scompany' 
    alias_attribute 'shipping_address1','saddress1' 
    alias_attribute 'shipping_address2','saddress2' 
    alias_attribute 'shipping_city','scity' 
    alias_attribute 'shipping_state','sstate' 
    alias_attribute 'shipping_zip','zip' 
    alias_attribute 'shipping_country','scountry' 
    alias_attribute 'shipping_phone','sphone' 
    alias_attribute 'shipping_method','shipvia' 
    alias_attribute 'subtotal','product' 
    alias_attribute 'shipping', 'freight' 
    alias_attribute 'handling', 'handling' 
    alias_attribute 'total', 'ordertot' 
    alias_attribute 'transaction_id', 'vsTransactionId' 
    alias_attribute 'reference_number', 'vsrefnbr' 
    alias_attribute 'approval_code', 'vsappcode' 
    alias_attribute 'created_on', 'entereddtm' 
end 

class OrdersController < ApplicationController 
    respond_to :html, :xml, :json 

    def index 
    @orders = Order.all 
    respond_with @orders 
    end 
end 

訂單是堆棧水平不具有堆棧跟蹤太深。

編輯#1框架/全跟蹤有1項:

actionpack (3.2.1) lib/action_dispatch/middleware/reloader.rb:70

編輯#2後挖掘發現了一些額外的細節。有一個軌道控制檯和Order.find,並得到了下面的錯誤。請注意0​​工作正常。

C:\Users\Rich\App>rails console 
Loading development environment (Rails 3.2.1) 
irb(main):001:0> Order.find(1) 
    ←[1m←[36mOrder Load (1.0ms)←[0m ←[1mSELECT `ordersum`.* FROM `ordersum` WHERE `ordersum`.`ordernbr` = 1 LIMIT 1←[0m 
SystemStackError: stack level too deep 
     from C:/ruby/lib/ruby/1.9.1/logger.rb:443 
irb(main):002:0> 
+0

請向我們展示堆棧跟蹤的詳細錯誤消息。 – iblue 2012-02-07 21:29:57

+0

沒有可用的堆棧跟蹤。 – user1143682 2012-02-07 21:36:57

+0

然後你可能已經在rails中發現了一個bug。你使用的是什麼rails版本?你能告訴我如何在我的機器上重現它嗎? – iblue 2012-02-07 21:38:34

回答

8

您的意思是別名handling本身?

alias_attribute 'handling', 'handling' 

這會使您的堆棧正確無誤。

+3

OMG ...我甚至不相信我做到了這一點SORRY GUYS!我必須需要咖啡因或其他東西!謝謝大家! – user1143682 2012-02-07 22:23:47