2009-08-05 5 views
2

나는 여기를 잃고있다. Dev 모드 (스크립트/서버)에서 실행 중일 때 나는 내 모델 번호에 대한 항목을 나열하려고 할 때 임의의 시간에 "undefined local variable or method 'id' for #<InsertModelNameHere:0x7f19bdb87dc8>"오류가 발생합니다. 페이지가 새로 고쳐지면 잘 작동하며 각 요청마다 모든 항목이 다시로드되기 때문에 dev에서만 볼 수 있다고 가정합니다. 경주 조건이 나 어쩌면 어쩌면? 나는이 문제가있는보기에서 "id"속성 (다른 키 명명 규칙을 사용하는 레거시 테이블)을 참조하지 않습니다. 동료 중 한 명이 레일스가 "id"속성을 모델에서 정의 된 기본 키.레일을 "정의되지 않은 지역 변수 또는 메소드"로 다시 채우지 않는 attr에 대해서

다음은보기, 오류 메시지 및 스택 추적을위한 코드입니다. 나는 레일 2.3.3을 달리고있다.

보기 :

<h2 class="textCenter">To Do List</h2> 
<% form_tag({:action => "list"}, :method => "get") do %> 
    <div class="full_width textCenter"> 
     <%= text_field_tag "q", params[:q] %> 
     <input type="submit" value="Search" /> 
    </div> 
<% end %> 
<table class="full_width list"> 
    <thead > 
     <tr > 
      <th >ID</th> 
      <th >Name</th> 
      <th >Resource ID</th> 
      <th >Company</th> 
      <th >&nbsp;</th> 
      <th >&nbsp;</th> 
     </tr> 
    </thead> 
    <tbody > 
     <% begin %> 
      <% @todos.each do |todo| %> 
       <tr class="<%= cycle "striped", "" %>" > 
        <td ><%= todo.pk_todo_id %></td> 
        <td ><%= todo.name %></td> 
        <td ><%= todo.fk_resource_id %></td> 
        <td ><%= todo.fk_company_id %></td> 
        <td ><%= link_to "STA", {:controller => "stas", :action => "list", :id => todo.fk_resource_id} %></td> 
        <td ><%= link_to "Edit", {:controller => "todos", :action => "edit", :id => todo.pk_todo_id} %></td> 
       </tr> 
      <% end %> 
     <% rescue => e; puts e.message; puts e.backtrace %> 
     <% end %> 
    </tbody> 
</table> 

오류 : undefined local variable or method 'id' for #<Todo:0x7f19bdb87dc8>

/var/lib/gems/1.8/gems/activerecord-2.3.3/lib/active_record/attribute_methods.rb:260:in 'method_missing' 
/var/lib/gems/1.8/gems/activerecord-2.3.3/lib/active_record/attribute_methods.rb:249:in 'method_missing' 
/home/scott/Projects/cllsuite/trunk/app/views/todos/list.rhtml:25:in '_run_rhtml_app47views47todos47list46rhtml' 
/home/scott/Projects/cllsuite/trunk/app/views/todos/list.rhtml:23:in 'each' 
/home/scott/Projects/cllsuite/trunk/app/views/todos/list.rhtml:23:in '_run_rhtml_app47views47todos47list46rhtml' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_view/renderable.rb:34:in 'send' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_view/renderable.rb:34:in 'render' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_view/base.rb:301:in 'with_template' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_view/renderable.rb:30:in 'render' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_view/template.rb:199:in 'render_template' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_view/base.rb:260:in 'render' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_view/base.rb:343:in '_render_with_layout' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_view/base.rb:257:in 'render' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/base.rb:1246:in 'render_for_file' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/base.rb:941:in 'render_without_benchmark' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/benchmarking.rb:51:in 'render' 
/var/lib/gems/1.8/gems/activesupport-2.3.3/lib/active_support/core_ext/benchmark.rb:17:in 'ms' 
/usr/lib/ruby/1.8/benchmark.rb:308:in 'realtime' 
/var/lib/gems/1.8/gems/activesupport-2.3.3/lib/active_support/core_ext/benchmark.rb:17:in 'ms' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/benchmarking.rb:51:in 'render' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/base.rb:1322:in 'default_render' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/base.rb:1328:in 'perform_action_without_filters' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/filters.rb:617:in 'call_filters' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/filters.rb:610:in 'perform_action_without_benchmark' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/benchmarking.rb:68:in 'perform_action_without_rescue' 
/var/lib/gems/1.8/gems/activesupport-2.3.3/lib/active_support/core_ext/benchmark.rb:17:in 'ms' 
/usr/lib/ruby/1.8/benchmark.rb:308:in 'realtime' 
/var/lib/gems/1.8/gems/activesupport-2.3.3/lib/active_support/core_ext/benchmark.rb:17:in 'ms' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/benchmarking.rb:68:in 'perform_action_without_rescue' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/rescue.rb:160:in 'perform_action_without_flash' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/flash.rb:146:in 'perform_action' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/base.rb:527:in 'send' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/base.rb:527:in 'process_without_filters' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/filters.rb:606:in 'process' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/base.rb:391:in 'process' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/base.rb:386:in 'call' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/routing/route_set.rb:434:in 'call' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/dispatcher.rb:88:in 'dispatch' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/dispatcher.rb:111:in '_call' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/dispatcher.rb:82:in 'initialize' 
/var/lib/gems/1.8/gems/activerecord-2.3.3/lib/active_record/query_cache.rb:29:in 'call' 
/var/lib/gems/1.8/gems/activerecord-2.3.3/lib/active_record/query_cache.rb:29:in 'call' 
/var/lib/gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in 'cache' 
/var/lib/gems/1.8/gems/activerecord-2.3.3/lib/active_record/query_cache.rb:9:in 'cache' 
/var/lib/gems/1.8/gems/activerecord-2.3.3/lib/active_record/query_cache.rb:28:in 'call' 
/var/lib/gems/1.8/gems/activerecord-2.3.3/lib/active_record/connection_adapter /abstract/connection_pool.rb:361:in 'call' 
/var/lib/gems/1.8/gems/rack-1.0.0/lib/rack/head.rb:9:in 'call' 
/var/lib/gems/1.8/gems/rack-1.0.0/lib/rack/methodoverride.rb:24:in 'call' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/params_parser.rb:15:in 'call' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/session/cookie_store.rb:93:in 'call' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/reloader.rb:29:in 'call' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/failsafe.rb:26:in 'call' 
/var/lib/gems/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in 'call' 
/var/lib/gems/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in 'synchronize' 
/var/lib/gems/1.8/gems/rack-1.0.0/lib/rack/lock.rb:11:in 'call' 
/var/lib/gems/1.8/gems/actionpack-2.3.3/lib/action_controller/dispatcher.rb:106:in 'call' 
/var/lib/gems/1.8/gems/rails-2.3.3/lib/rails/rack/static.rb:31:in 'call' 
/var/lib/gems/1.8/gems/rack-1.0.0/lib/rack/urlmap.rb:46:in 'call' 
/var/lib/gems/1.8/gems/rack-1.0.0/lib/rack/urlmap.rb:40:in 'each' 
/var/lib/gems/1.8/gems/rack-1.0.0/lib/rack/urlmap.rb:40:in 'call' 
/var/lib/gems/1.8/gems/rails-2.3.3/lib/rails/rack/log_tailer.rb:17:in 'call' 
/var/lib/gems/1.8/gems/rack-1.0.0/lib/rack/content_length.rb:13:in 'call' 
/var/lib/gems/1.8/gems/rack-1.0.0/lib/rack/chunked.rb:15:in 'call' 
/var/lib/gems/1.8/gems/rack-1.0.0/lib/rack/handler/mongrel.rb:61:in 'process' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:159:in 'process_client' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in 'each' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in 'process_client' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in 'run' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in 'initialize' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in 'new' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in 'run' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in 'initialize' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in 'new' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in 'run' 
/var/lib/gems/1.8/gems/rack-1.0.0/lib/rack/handler/mongrel.rb:34:in 'run' 
/var/lib/gems/1.8/gems/rails-2.3.3/lib/commands/server.rb:111 
/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in 'gem_original_require' 
/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in 'require' 
script/server:3 
+0

TODO 모델은 어떻게 생겼습니까? – ErsatzRyan

+0

특히 fk_resource_id 메소드 – ErsatzRyan

+0

fk_resource_id는 db의 열 –

답변

2

당신이 할 일에 primary_key와 설정이 있나요?

class Todo 
    set_primary_key 'pk_todo_id' 

end 

문제 일 수 있습니다. 무슨 일이 일어나는지 알려줘.

행운을 빈다.

+0

예, 이미 설정했습니다 –

+0

이것은 veiw을 칠 때마다 발생하지 않습니다. 어쩌면 시간의 절반이 걸릴 것입니다. –

+2

안녕 스콧, 아마도 이것은 2.3.3 문제 일 것입니다. 참조 : https://rails.lighthouseapp.com/projects/8994/tickets/2948-exception-a-copy-of-actorscontroller-has-been-removed-from-the-module-tree-but-is-still- 활성 상태이며 가능한 해결 방법은 http://github.com/rails/rails/commit/d37ac7958fc88fdbf37a8948102f6b4e45c530b3입니다. 우리는이 문제가 있었는데, 분명히 생산 모드 나 씬 서버에서는 발생하지 않습니다. 씬 (thin)을 사용해 보거나 프로덕션 모드에서 다시 생성 해보십시오. 클래스가 잘못로드되어 실제 클래스 대신에 Todo 스텁이로드되므로 기본 키가 건너 뜁니다. – mixonic

0

패치를 제대로 적용 할 수 없기 때문에 2.3.2로 되돌릴 것입니다. 나는 이것이 문제라고 가정 할 것이다. 특히 2.3.3에 한정되어있다. 모두 도움을 주셔서 감사합니다.

+0

예, dev를 직접 실행하기 위해 thin을 사용하여 작업하고 있습니다. 2.3.3은 지저분한 릴리스였습니다. – mixonic

관련 문제