2011-03-09 166 views
1

我在我的Rails应用程序的模型类叫做:UserAction 在这个模型中我有一个恒定的(这是我作为一个枚举使用):未初始化的常量

class UserAction < ActiveRecord::Base 
end 

class UserActionType 
    ACTION1 = "action1" 
    ACTION2 = "action2" 
end 

,当我尝试使用恒:

if some_action == UserActionType::ACTION1 
在应用程序控制器我收到以下错误

NameError (uninitialized constant ApplicationController::UserActionType) 

有什么想法?

回答

1

要获取UserActionType类,实际上您需要要求写入它的文件。对于模型或配置了自动加载的地方,Rails通过自动加载文件使其更容易。例如,如果遇到UserAction,Rails会在模型中或您自动配置自动加载并自动需要该文件的任何位置查找名为user_action.rb的文件。因此,您可以在app/models中创建一个名为user_action_type.rb的新文件,并在其中粘贴UserActionType类。然后,这个错误不会发生。

+0

但是如果我要添加app/models/user_action_type.rb然后生病必须在数据库中为它创建一个表,并且我只使用该类作为枚举替换... – Ran

+2

只需声明该类而不继承ActiveRecord ::基础。您只需要ActiveRecord模型的数据库表。 – Teoulas

+0

@ran ...如果你没有扩展'ActiveRecord :: Base',你不必为它创建一个表。 – rubyprince

相关问题