我有三个模型 - Company
,User
和CompanyUser
。协会如下。
Company.rb
has_many :company_users
has_many :users, :through => :company_users
User.rb
has_many :company_users, :dependent => :destroy
belongs_to :company
CompanyUser.rb
belongs_to :company
belongs_to :user
要获取current_user.company,要在模型关联中进行哪些修改?
任何帮助都将不胜感激。
答案 0 :(得分:2)
应该是:
has_many :companies, through: :company_users
a has_many:通过关联经常用于设置多对多 与另一个模型的连接。这种关联表明了 声明模型可以与另一个的零个或多个实例匹配 通过第三个模型进行模型化。
因此,如果您要创建三个模型并建立has_many :through
关联,我相信User will have many Companies
和Company will have many Users
。
但如果您需要该用户只属于一个company
而不是创建第三个模型,请在company_id
表格中保存users
。
<强>更新强>
现在,您的方案为A company can have may users
和User belongs to a single company
,您需要两个模型:User
和Company
。您的User
模型应具有属性company_id
,然后company_id
应仅保存在users
表中。关联如下:
class User < ActiveRecord::Base
belongs_to :company
end
class Company < ActiveRecord::Base
has_many :users
end
然后你可以current_user.company
您可以在RailsGuides
中获取有关关联的更多信息答案 1 :(得分:0)
根据你所采取的协会,
用户已通过公司用户模式与公司建立关联,因此用户可能会根据您的关联拥有多家公司。
所以,
class User < ActiveRecord::Base
has_many :company_users, :dependent => :destroy
has_many :companies, :through => :company_users
end
current_user.companies
会给你这些公司。
但是,如果您只需要一个公司供用户使用,那么
class User < ActiveRecord::Base
belongs_to :company
end
使用belongs_to公司并将company_id
保存在users表中,
then you can call,
`current_user.company`
答案 2 :(得分:0)
根据你的逻辑,
我想你可能需要创建一个新的变量会话current_company_user
,它是对象CompanyUser。
然后,通过以下方式获取公司:
current_company_user.company