cancan:为Userhome:Class过去未定义的方法`find'

时间:2011-08-15 19:16:54

标签: ruby-on-rails-3 cancan

cancan无法与没有类的控制器一起使用。所以我创建了userhome.rb模型:

class Userhome
end

userhome控制器中有一个访问另一个目录/类中的页面的操作。尝试访问它会产生以下错误:

undefined method `find' for Userhome:Class

对我来说最好的事情是......:

  1. 删除用户家庭模型,
  2. 从userhome控制器中删除“load_and_authorize_resource”,并
  3. 只需在其他所有区域使用cancan锁定应用程序吗?
  4. 或者有解决此错误的解决方法吗?

1 个答案:

答案 0 :(得分:2)

看看CanCan documentation on non-RESTful controllers

“资源”是您的控制器负责列出,创建,更新等的“事物”。它通常是一个模型,但不一定是(例如,您可能有一个“搜索结果”资源,但不是'有一个相应的模型)。

如果您的控制器确实没有处理资源,那么您可能只想在控制器中使用authorize!,但是如果控制器 处理资源但是没有相应的模型(听起来它可能描述了你的情况)然后你可能想要使用authorize_resource并指定没有相应的类。这使您可以“假装”拥有资源(即,您可以根据资源上的操作指定功能),而无需实际拥有代表该资源的模型。