use*_*682 2 activerecord ruby-on-rails-3
与Rails 3.2.1有一个奇怪的问题.使用带有icky列名的遗留数据库,我正在尝试在我的模型中清理它们.以下模型在HTML中工作正常,但使用JSON或XML进行响应会引发stack level too deep
错误:
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
Run Code Online (Sandbox Code Playgroud)
订单是堆栈级别太深,没有堆栈跟踪.
编辑#1 框架/完整跟踪有1项:
actionpack (3.2.1) lib/action_dispatch/middleware/reloader.rb:70
编辑#2 挖掘后找到一些额外的细节.有一个rails控制台和一个Order.find
并得到以下错误.请注意,Order.all
工作正常.
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>
Run Code Online (Sandbox Code Playgroud)
你的意思是别名handling
吗?
alias_attribute 'handling', 'handling'
Run Code Online (Sandbox Code Playgroud)
这会打击你的筹码.
归档时间: |
|
查看次数: |
1321 次 |
最近记录: |