HABTM :through + simple_form

Czołem!

Nie mam pomysłu jak ugryźć taki case:

Zadanie:

class Task < ActiveRecord::Base
  has_many :assignments
  has_many :employees, through: :assignments
  accepts_nested_attributes_for :assignments, allow_destroy: true
end

Pracownik:

class Employee < ActiveRecord::Base
  has_many :assignments
  has_many :tasks, through: :assignments
end

Przydział:

class Assignment < ActiveRecord::Base
  belongs_to :employee
  belongs_to :task
  attr_accessible :foreman
end

Do zadania może być przydzielonych kilku pracowników oraz może (ale nie musi) zostać wskazany “brygadzista” (może być ich kilku).

Na formularzu dodawania zadania, chciałbym przedstawić przydzielanie pracowników w formie listy wszystkich dostępnych pracowników z chekboxem przydzielenia pracownika i drugim oznaczającym czy dany pracownik jest brygadzistą.

Rozwiązanie sugerowane przez simple_form nie wystarcza:

   = simple_form_for @task do |f|
    = f.input :title
    = f.association :employees, collection: Employee.all, as: :check_boxes

Jak podejść do tego tematu?

HABTM to dokładnie ten moment, kiedy domyślne komponenty Rails okazują się nie wystarczać (albo wystarczać słabo). Napisz sobie FormObjecta i obsłuż samodzielnie taki formularz.

2 Likes