未定义的方法“find”对于管理员:类 --- CanCan
有没有人看到过这个错误:
undefined method `find' for Admin:Class
When using Devise and CanCan?
我无法找出错误所在:日志没有显示任何有用的内容:
Started GET "/admin/become?id=3" for 127.0.0.1 at Wed Apr 06 13:09:15 -0700 2011
SQL (0.3ms) SHOW client_min_messages
SQL (0.2ms) SET client_min_messages TO 'panic'
SQL (0.5ms) SET standard_conforming_strings = on
SQL (0.2ms) SET client_min_messages TO 'notice'
SQL (0.4ms) SET time zone 'UTC'
SQL (0.1ms) SHOW TIME ZONE
Processing by AdminController#become as HTML
Parameters: {"id"=>"3"}
User Load (2.2ms) SELECT "users".* FROM "users" WHERE ("users"."id" = 2) LIMIT 1
Completed in 57ms
NoMethodError (undefined method `find' for Admin:Class):
Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/rescues/_trace.erb (0.9ms)
Permission Load (2.5ms) SELECT * FROM "permissions" INNER JOIN "groups" ON "groups"."id" = "permissions"."group_id" WHERE ("permissions"."user_id" = 2) ORDER BY groups.name ASC
SQL (1.3ms) SELECT COUNT(*)
FROM pg_tables
WHERE tablename = 'groups'
应用程序跟踪:
cancan (1.5.1) lib/cancan/controller_resource.rb:102:in `find_resource'
cancan (1.5.1) lib/cancan/controller_resource.rb:67:in `load_resource_instance'
cancan (1.5.1) lib/cancan/controller_resource.rb:31:in `load_resource'
cancan (1.5.1) lib/cancan/controller_resource.rb:24:in `load_and_authorize_resource'
cancan (1.5.1) lib/cancan/controller_resource.rb:9:in `send'
cancan (1.5.1) lib/cancan/controller_resource.rb:9:in `_callback_before_35483'
activesupport (3.0.3) lib/active_support/callbacks.rb:456:in `_run__22524425__process_action__2106917469__callbacks'
activesupport (3.0.3) lib/active_support/callbacks.rb:409:in `send'
activesupport (3.0.3) lib/active_support/callbacks.rb:409:in `_run_process_action_callbacks'
activesupport (3.0.3) lib/active_support/callbacks.rb:93:in `send'
activesupport (3.0.3) lib/active_support/callbacks.rb:93:in `run_callbacks'
actionpack (3.0.3) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (3.0.3) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
Has anyone seen this error:
undefined method `find' for Admin:Class
When using Devise and CanCan?
I'm unable to isolate where this is erroring: The logs are showing nothing useful:
Started GET "/admin/become?id=3" for 127.0.0.1 at Wed Apr 06 13:09:15 -0700 2011
SQL (0.3ms) SHOW client_min_messages
SQL (0.2ms) SET client_min_messages TO 'panic'
SQL (0.5ms) SET standard_conforming_strings = on
SQL (0.2ms) SET client_min_messages TO 'notice'
SQL (0.4ms) SET time zone 'UTC'
SQL (0.1ms) SHOW TIME ZONE
Processing by AdminController#become as HTML
Parameters: {"id"=>"3"}
User Load (2.2ms) SELECT "users".* FROM "users" WHERE ("users"."id" = 2) LIMIT 1
Completed in 57ms
NoMethodError (undefined method `find' for Admin:Class):
Rendered /Library/Ruby/Gems/1.8/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/rescues/_trace.erb (0.9ms)
Permission Load (2.5ms) SELECT * FROM "permissions" INNER JOIN "groups" ON "groups"."id" = "permissions"."group_id" WHERE ("permissions"."user_id" = 2) ORDER BY groups.name ASC
SQL (1.3ms) SELECT COUNT(*)
FROM pg_tables
WHERE tablename = 'groups'
Application Trace:
cancan (1.5.1) lib/cancan/controller_resource.rb:102:in `find_resource'
cancan (1.5.1) lib/cancan/controller_resource.rb:67:in `load_resource_instance'
cancan (1.5.1) lib/cancan/controller_resource.rb:31:in `load_resource'
cancan (1.5.1) lib/cancan/controller_resource.rb:24:in `load_and_authorize_resource'
cancan (1.5.1) lib/cancan/controller_resource.rb:9:in `send'
cancan (1.5.1) lib/cancan/controller_resource.rb:9:in `_callback_before_35483'
activesupport (3.0.3) lib/active_support/callbacks.rb:456:in `_run__22524425__process_action__2106917469__callbacks'
activesupport (3.0.3) lib/active_support/callbacks.rb:409:in `send'
activesupport (3.0.3) lib/active_support/callbacks.rb:409:in `_run_process_action_callbacks'
activesupport (3.0.3) lib/active_support/callbacks.rb:93:in `send'
activesupport (3.0.3) lib/active_support/callbacks.rb:93:in `run_callbacks'
actionpack (3.0.3) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (3.0.3) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
背景:请参阅问题中的上述评论,包括 上一个问题,以及此链接了解详细信息。
您的问题源于没有基于设计的管理类。我从 NoMethodFound 错误中收集了此信息。这意味着您无法在其上使用任何类型的 ActiveRecord 方法,而基本实现正在尝试执行此操作。 替换这行代码...
您可能想用这样的东西
(或者可以在您的用户模型表中找到的东西)
Background: See the comments above in the question, including the previous question, and this link for details.
Your problem stems from not having a Devise based Admin class. I gleaned this information from the NoMethodFound error. This means that you are unable to use any kind of ActiveRecord methods on it, which the base implementation is trying to do. You'll probably want to replace this line of code...
with something like this...
(or something that can be found in your User model's table)