Ala*_*de_ 4 ruby sql join ruby-on-rails
我似乎无法解决名称约定或我是否错误地加入它们.
这是我从用户模型中得到的错误:
> user.companies
NameError: uninitialized constant User::CompaniesUser
Run Code Online (Sandbox Code Playgroud)
从公司模型:
> company.users
NameError: uninitialized constant Company::CompaniesUser
Run Code Online (Sandbox Code Playgroud)
user.rb
has_many :companies_users
has_many :companies, :through => :companies_users
Run Code Online (Sandbox Code Playgroud)
company.rb
has_many :companies_users
has_many :users, :through => :companies_users
Run Code Online (Sandbox Code Playgroud)
company_user.rb
class CompanyUser < ActiveRecord::Base
belongs_to :company
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
我一直在查看示例,但老实说,我不明白为什么它会继续爆炸.如果需要任何其他信息,我会提供,我感谢任何帮助.
您的关联companies_users将映射到CompaniesUserRails 命名的类,因为它"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
Run Code Online (Sandbox Code Playgroud)
更新:当然,如果您想坚持使用关联名称companies_users,那么@Babur会为您提供解决方案.
它应该是:
has_many :company_users
has_many :companies, :through => :company_users
Run Code Online (Sandbox Code Playgroud)
只有最后一个词应该是复数形式
| 归档时间: |
|
| 查看次数: |
3461 次 |
| 最近记录: |