Rails 4:has_many:通过错误

时间:2014-07-14 12:07:19

标签: ruby-on-rails

这是我的加入模式:

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

3 个答案:

答案 0 :(得分:4)

has_many通过关系应该是这样的:

在app / models / company.rb文件中

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

在app / models / user.rb文件中

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

在app / models / company_user.rb文件中

  belongs_to :company
  belongs_to :user

如果要在删除公司/用户时删除company_users表中的依赖记录,

在公司和用户模型中的has_many关系末尾添加, :dependent => :destroy

希望这可以帮助你..

感谢。!!

答案 1 :(得分:3)

一定是

has_many :company_users
  

“CompanyUser”.tableize =&gt; “company_users”

答案 2 :(得分:1)

该模型应为:

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

has_many声明谢谢明确定义为:

class User < ActiveRecord::Base
   has_many :company_users
end