Rails找不到与Ruby类同名的模型

时间:2009-06-06 23:17:25

标签: ruby-on-rails ruby class module

我是Ruby on Rails的新手,我有一个带有“Set”模型的项目。这是在Rails 2.3.2中。现在问题是它根本找不到该模型类的任何方法。例如:#“的未定义方法find' for Set:Class" or "undefined method错误”。它似乎试图在Ruby“Set”类而不是我的模型类中找到这些方法。

如果我可以编写我的Set模型类的完全限定名称(如Module :: Set),它可能会有效,但我不确定它会是什么。 (是的,我确实想要我的模型名称Set。在我的应用程序的上下文中,其他任何东西都会很尴尬。)

有什么想法吗?

1 个答案:

答案 0 :(得分:22)

不要将其命名为Set。那种方式就是疯狂。

这笔交易是因为你试图重新定义已经在全局环境中定义的'Set'而失败了。

class Set < ActiveRecord::Base # You are attempting to define a constant 'Set'
                               # here, but you can't because it already exists

您可以将您的类放在一个模块中,然后您将不会收到错误,因为您将在命名空间中定义Set。

module Custom
  class Set < ActiveRecord::Base
  end
end

但是,每次要使用Set类时,都必须将其称为Custom :: Set。很多Rails魔法都不会起作用,因为它期望在全局上下文中定义类名。你将左右拼写插件和宝石。

更容易给它一个不同的名字。

class CustomSet < ActiveRecord::Base

所有魔法都有效,并且不需要monkeypatching。