这是我的加入模式:
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 :(得分: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