2014-07-14 111 views
0

這是我加盟模式:軌道4:的has_many:通過錯誤

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

User型號:

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    ROLES = %w[admin requestor requestor_limited shipping_vendor].freeze 

    attr_accessor :temp_password 

    has_many :companies_users 

    ... 

end 

如果我在控制檯中運行以下命令:

u = User.first 
u.companies 

這是我得到的錯誤:

NameError: uninitialized constant User::CompaniesUser

+0

它應該是'has_many company_users',並且你應該在'User'模型中擁有'has_many:users,:through => company_users'。 – Pavan

回答

4

的has_many通過關係應該是這樣的:

在應用程序/模型/ company.rb文件

has_many :company_users 
    has_many :users, :through => :company_users 

在應用程序/模型/ user.rb文件

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

在應用程序/模型/ company_user.rb文件

belongs_to :company 
    belongs_to :user 

如果你想刪除的公司/用戶何時刪除company_users表中的相關記錄,

添加,, :dependent => :destroy在的has_many關係到底公司和用戶模型。

希望這可以幫到你..

謝謝。

+0

我將表命名爲'company_users',是否應該命名爲'company_users'? – dennismonsewicz

+1

是..你必須.. –

+0

感謝您的幫助! – dennismonsewicz

3

它必須是

has_many :company_users 

「CompanyUser」 .tableize => 「company_users」

1

模型應是:

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

或者has_many聲明sheel明確定義爲:

class User < ActiveRecord::Base 
    has_many :company_users 
end