2011-01-30 182 views
1

我得到一個找不到的錯誤。它在軌道控制檯中工作正常...Struct :: Group:undefined方法`find'

這是發生在由delayed_job調用的庫中。以下是全線:

@group = Group.find(:first, :conditions => ["uuid = ?", @uuid]) 

任何想法?謝謝。

回溯:

{undefined method `find' for Struct::Group:Class 
/Users/xxxxx/Sites/xxxxx/lib/mailing_job.rb:79:in `perform'\n/Library/Ruby/Gems/1.8/bundler/gems/delayed_job-bb1e7803472b/lib/delayed/backend/base.rb:87:in `invoke_job'\n/Library/Ruby/Gems/1.8/bundler/gems/delayed_job-bb1e7803472b/lib/delayed/worker.rb:120:in `run'\n/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/timeout.rb:62:in `timeout'\n/Library/Ruby/Gems/1.8/bundler/gems/delayed_job-bb1e7803472b/lib/delayed/worker.rb:120:in `run'\n/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'\n/Library/Ruby/Gems/1.8/bundler/gems/delayed_job-bb1e7803472b/lib/delayed/worker.rb:119:in `run'\n/Library/Ruby/Gems/1.8/bundler/gems/delayed_job-bb1e7803472b/lib/delayed/worker.rb:177:in `reserve_and_run_one_job'\n/Library/Ruby/Gems/1.8/bundler/gems/delayed_job-bb1e7803472b/lib/delayed/worker.rb:104:in `work_off'\n/Library/Ruby/Gems/1.8/bundler/gems/delayed_job-bb1e7803472b/lib/delayed/worker.rb:103:in `times'\n/Library/Ruby/Gems/1.8/bundler/gems/delayed_job-bb1e7803472b/lib/delayed/worker.rb:103:in `work_off'\n/Library/Ruby/Gems/1.8/bundler/gems/delayed_job-bb1e7803472b/lib/delayed/worker.rb:78:in `start'\n/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'\n/Library/Ruby/Gems/1.8/bundler/gems/delayed_job-bb1e7803472b/lib/delayed/worker.rb:77:in `start'\n/Library/Ruby/Gems/1.8/bundler/gems/delayed_job-bb1e7803472b/lib/delayed/worker.rb:74:in `loop'\n/Library/Ruby/Gems/1.8/bundler/gems/delayed_job-bb1e7803472b/lib/delayed/worker.rb:74:in `start'\n/Library/Ruby/Gems/1.8/bundler/gems/delayed_job-bb1e7803472b/lib/delayed/tasks.rb:9\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call'\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute'\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each'\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute'\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'\n/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each'\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run'\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run'\n/Library/Ruby/Gems/1.8/gems/rake-0.8.7/bin/rake:31\n/usr/bin/rake:19:in `load'\n/usr/bin/rake:19 
+0

也許更多的回溯可能會有所幫助。 – theIV 2011-01-30 01:26:08

+0

確定thihg現在來... – AnApprentice 2011-01-30 01:30:15

+0

這是你在找什麼? – AnApprentice 2011-01-30 01:35:51

回答

1

提供參數,如:全部:第一等用Rails 3不贊成你應該使用這樣的事情,而不是:

Group.first(:conditions => ["uuid = ?", @uuid]) 

下面是幾個不贊成使用的參考文獻:active-record-query-interface

3

根據delayed_job docs中的常見問題解答...

對於Struct :: Group已經存在的Ruby/Rails,存在一個奇怪的邊界情況,因此從繼承自Struct的類中調用Group.anything會產生奇怪的結果。您可以通過給兩個冒號前綴組來調用此問題。例如,:: Group.find將按預期工作。

當這個錯誤對我來說,我在從Struct繼承的後臺作業中調用'Group'類方法。用冒號前面加上類名解決了這個問題。