2013-08-22 13 views
3

我似乎无法解决名称约定或者如果我不正确地加入它们。Rails:NameError:连接表上未初始化的常量

这是我从用户模型得到的错误:

> user.companies 
NameError: uninitialized constant User::CompaniesUser 

而且从公司的模式:

> company.users 
NameError: uninitialized constant Company::CompaniesUser 

user.rb

has_many :companies_users 
has_many :companies, :through => :companies_users 

company.rb

has_many :companies_users 
has_many :users, :through => :companies_users 

company_user.rb

class CompanyUser < ActiveRecord::Base 
    belongs_to :company 
    belongs_to :user 
end 

我一直在寻找向上穿过的例子,但我真的不明白为什么它使爆炸。如果有任何额外的信息需要,我会提供,我感谢任何帮助。

回答

0

它应该是:

has_many :company_users 
has_many :companies, :through => :company_users 

只有最后一个字应该使用复数

6

你的公会companies_users将Rails的被映射到名为CompaniesUser类,因为"companies_users".classify会给你CompaniesUser。但是要关联的类是CompanyUser,所以在这种情况下,解决办法是修改您的协会包括class_name选项,如下所示:

# user.rb 

has_many :companies_users, class_name: CompanyUser 
has_many :companies, :through => :companies_users 

# company.rb 

has_many :companies_users, class_name: CompanyUser 
has_many :users, :through => :companies_users 

更新:这是当然的,如果你想坚持的关联名称companies_users,否则@Babur将为您提供解决方案。

0

由于您的Company模型中的has_many :companies_users,Rails试图为该表加载模型类,该惯例将被称为CompaniesUser。为了使你的代码的工作,你既可以改变你的has_many声明

has_many :company_users 

甚至完全摆脱了CompanyUser模型,并使用has_and_belongs_to_many代替。

class User 
    has_and_belongs_to_many :companies 
end 

class Company 
    has_and_belongs_to_many :users 
end 
相关问题