2012-02-15 18 views
5

मैं एक पूर्व-मौजूदा MySQL डेटाबेस के आसपास एक रेल ऐप बनाने की कोशिश कर रहा हूं। मैंने रेल प्रोजेक्ट बनाया है, डेटाबेस.इम्एल फ़ाइल को ठीक से स्थापित किया है और डीबी में मेरे उपयोगकर्ता टेबल के अनुरूप एक मॉडल, उपयोगकर्ता बनाया है।रेल 3: Model.all => NoMethodError: शून्य के लिए अपरिभाषित विधि 'स्वीकार करें': NilClass

> User.all 
(32.4ms) SHOW TABLES 
(34.9ms) describe `users` 
NoMethodError: undefined method `accept' for nil:NilClass 
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in `to_sql' 
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:16:in `select_all' 
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/query_cache.rb:63:in `select_all' 
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/querying.rb:38:in `block in find_by_sql' 
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/explain.rb:40:in `logging_query_plan' 
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/querying.rb:37:in `find_by_sql' 
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/relation.rb:170:in `exec_queries' 
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/relation.rb:159:in `block in to_a' 
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/explain.rb:33:in `logging_query_plan' 
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/relation.rb:158:in `to_a' 
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/relation/finder_methods.rb:159:in `all' 
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/activerecord-3.2.1/lib/active_record/querying.rb:5:in `all' 
from (irb):1 
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands/console.rb:47:in `start' 
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands/console.rb:8:in `start' 
from /home/richard/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands.rb:41:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>'1.9.3-p0 :002 > ^C 

किसी भी विचार क्यों यह हो सकता है: जब मैं रेल हालांकि इसे बाहर का परीक्षण करने के कंसोल चलाने के लिए, यह मैं क्या मिलता है? मैं रेलवे सम्मेलन का पालन कर रहा हूं, जहां तक ​​मुझे पता है: मैंने एक उपयोगकर्ता मॉडल बनाया है जिसे पहले से ही डीबी में उपयोगकर्ता कहा जाता है, जिसका प्राथमिक कुंजी आईडी नामक एक पूर्णांक फ़ील्ड है।

+0

क्या आपके पास 'आगंतुक' नामक कुछ कॉलम है? – shingara

+0

@ शिंगारा नहीं, मैं नहीं, क्यों? –

+0

क्योंकि यह एक चरणीय कॉल 'विज़िटर' स्टैकट्रैक में शून्य है। तो समस्या हो सकती है – shingara

उत्तर

4

बस एक ही समस्या थी। इसे एक MySQL से संबंधित समस्या होने के लिए संक्षिप्त किया गया क्योंकि यह केवल स्टेजिंग पर्यावरण (MySQL) में हो रहा था, न कि विकास (एक वर्ग 3) में। mysql2 को संस्करण 0.2.7 से 0.3.11 तक अपग्रेड करके इसे ठीक किया गया।

+0

यह मेरे लिए काम किया। संस्करण '<0.3' को हटाने के लिए संपादित Gemfile। फिर 'बंडल अपडेट mysql2' कहा जाता है और' रेक डीबी: ड्रॉप 'के साथ डेटाबेस को फिर से बनाया गया, इसके बाद 'रेक --trace डीबी: सेटअप'। – peterept

+0

मैं गैर-रेल ऐप में 0.3.11 का उपयोग कर रहा हूं और अभी भी यह समस्या है। –

+1

@ बेनहेमिल, मुझे यह समस्या 0.3.11, गैर-रेल के साथ भी है। मेरे gemspec से activerecord-mysql2-adapter को हटाकर इसे हल करें। –

4

रेलवे 3.2.2 में अपग्रेड करने के बाद मुझे MySQL के साथ समान समस्या थी।

यही वह है जो मैंने इसे ठीक करने के लिए किया था।

rvm gem install mysql2 
In GemFile remove old MySQL gem and add - gem ‘mysql2' 
bundle install 
bundle update activerecord-mysql2-adapter 
bundle update mysql2 

फिर अपने रेल सर्वर को पुनरारंभ करें।

संबंधित मुद्दे