【发布时间】:2011-11-20 21:03:46
【问题描述】:
我有一个用户模型:
class User < ActiveRecord::Base
end
此模型用于存储所有企业用户
然后我想在我的工作空间命名空间中有另一个用户模型:
class Workplace::User < ActiveRecord::Base
end
这个类将用于我的用户在他们工作场所的用户
当我要迁移时它不起作用并出现以下错误消息:
Expected .../app/models/workplace/user.rb to define User
我对使用不同名称的模型没有这个问题,但我想使用相同的名称(对我来说更有意义...)
我怎么可能?谢谢!!!
【问题讨论】:
-
就个人而言,我认为这是一个坏主意,因为您现在必须在代码中跟踪您正在处理的用户类型。对我来说,听起来你有应用程序用户和工作场所用户。为什么不只有 AppUser 和 User?还是使用相同的模型,使用适当的关联,然后消除差异?
-
我不能使用同一个模型,因为我有一个多对多的关系。 User 是“公司目录”,而 Workplace::User 是在工作场所工作的用户的个人目录。另一种方法是将类排除在模型之外并创建一个 WorkplaceUser(或任何其他名称)类,但我尝试了这种方式,因为路由似乎更干净。我现在有workplace_users_path 而不是workplace_workplace_users_path。但我对 Rails 很陌生,我仍在寻找自己的方式。我愿意接受任何建议...
-
为什么不使用单表继承?一切都会干净得多
标签: ruby-on-rails model namespaces