如何在 ActiveAdmin 中实现多对多?
How to implement a many-to-many in ActiveAdmin?
有一个多对多:
class Employee < ActiveRecord::Base
has_many :employees_and_positions
has_many :employees_positions, through: :employees_and_positions
end
class EmployeesAndPosition < ActiveRecord::Base
belongs_to :employee
belongs_to :employees_position
end
class EmployeesPosition < ActiveRecord::Base
has_many :employees_and_positions
has_many :employees, through: :employees_and_positions
end
如何在添加员工时在表单中实现选择(check_boxes)职位?
我写了这个变体:
f.inputs 'Communications' do
f.input :employees_positions, as: :check_boxes
end
它在表格中显示一个位置列表,但不会将任何内容保存到 table (employees_and_positions)。
如何修复?
假设您有一个 employee
,您可以使用 employee.employees_position_ids
引用 employees_positions
关联的 ID。因此,您可以使用 check_box 为每个 EmployeesPosition
批量分配预先存在的 EmployeesPosition
对象,但您需要使用 employee_position_ids
属性
= f.input :employee_position_ids, as: :check_boxes, collection: EmployeesPosition.all
此外,请确保您已将 employee_position_ids
参数列入活动管理资源中的白名单:
ActiveAdmin.register Employee do
permit_params employee_position_ids: []
end
有一个多对多:
class Employee < ActiveRecord::Base
has_many :employees_and_positions
has_many :employees_positions, through: :employees_and_positions
end
class EmployeesAndPosition < ActiveRecord::Base
belongs_to :employee
belongs_to :employees_position
end
class EmployeesPosition < ActiveRecord::Base
has_many :employees_and_positions
has_many :employees, through: :employees_and_positions
end
如何在添加员工时在表单中实现选择(check_boxes)职位? 我写了这个变体:
f.inputs 'Communications' do
f.input :employees_positions, as: :check_boxes
end
它在表格中显示一个位置列表,但不会将任何内容保存到 table (employees_and_positions)。 如何修复?
假设您有一个 employee
,您可以使用 employee.employees_position_ids
引用 employees_positions
关联的 ID。因此,您可以使用 check_box 为每个 EmployeesPosition
批量分配预先存在的 EmployeesPosition
对象,但您需要使用 employee_position_ids
属性
= f.input :employee_position_ids, as: :check_boxes, collection: EmployeesPosition.all
此外,请确保您已将 employee_position_ids
参数列入活动管理资源中的白名单:
ActiveAdmin.register Employee do
permit_params employee_position_ids: []
end