我有三个模型Company
,User
和Division
User
有多个Division
用于不同的Companies
我需要确定哪家公司拥有分部
因此,我在has_many :through
和Users
Divisions
关联
模型UsersDivision
包含此字段id|user_id|division_id|company_id
但是当我更新用户模型rails时删除旧记录并创建没有company_id
字段的新记录如何更新模型UsersDivision
并合并{ {1}}?
回调?
company_id
还是在控制器中?
class UsersDivision < ActiveRecord::Base
after_update :set_company
belongs_to :user
belongs_to :division
belongs_to :company
validates :user_id, :division_id, presence: true
private
def set_company(company)
self.company_id = company
end
end
如何在创建UsersDivision记录时合并company_id?
答案 0 :(得分:0)
因此,我在
之间建立了has_many :through
和Users
Divisions
关联
我希望有Divisions
的表格,然后是CompanyDivisions
的表格,然后我们就可以将用户与之相关联。
以下是我设置的方法:
#app/models/user.rb
class User < ActiveRecord::Base
has_many :user_divisions
has_many :divisions, through: :user_divisions
has_many :company_divisions, through: :user_divisions
has_many :companies, through: :company_divisions
end
#app/models/user_division.rb
class UserDivision < ActiveRecord::Base
belongs_to :user
belongs_to :company_division
end
#app/models/company.rb
class Company < ActiveRecord::Base
has_many :company_divisions
has_many :divisions, through: :company_divisions
end
#app/models/company_division.rb
class CompanyDivision < ActiveRecord::Base
belongs_to :company
belongs_to :division
end
#app/models/division.rb
class Division < ActiveRecord::Base
has_many :company_divisions
has_many :companies, through: :company_divisions
end
这非常臃肿,但应该让你能够打电话:
@user.divisions
@user.divisions.each do |division|
division.companies.first
创建
时如何合并company_id
记录UsersDivision
这取决于几个因素:
params
哈希- 您的协会如何设置
醇>
我没有你的params哈希,但我确实有你当前的代码:
class UsersController < ApplicationController
def update
@company = Company.find params[:company_id]
@user = User.find params[:id]
redirect_to :back if @user.update user_params
end
private
def user_params
params.require(___).permit(___).merge(company_id: @company.id)
end
end