Мне нужна некоторая концептуальная помощь:
Предположим, что ваши пользователи по сути дела.У вас есть сотрудники, и у вас есть штатные должности.По сути, один сотрудник может занимать несколько должностей, а одна должность может занимать несколько сотрудников.
Мой have_many: сквозная работа между сотрудниками и должностями осуществляется через объединительную таблицу Staffization.Тем не менее, моя форма редактирования для сотрудника возвращает ВСЕ Позиции как флажки для всего приложения, а не только для этого конкретного пользователя.И никто не сохраняется, когда я отправляю обновление.Нужно ли делать что-то другое с моими ассоциациями, или есть лучший способ сузить данные в формах?
Мои модели:
class User < ActiveRecord::Base
has_many :employees, :dependent => :destroy
has_many :positions, :dependent => :destroy
class Employee < ActiveRecord::Base
belongs_to :user
has_many :positions, :through => :staffizations
has_many :staffizations, :dependent => :destroy
class Position < ActiveRecord::Base
belongs_to :user
has_many :employees, :through => :staffizations
has_many :staffizations, :dependent => :destroy
class Staffization < ActiveRecord::Base
belongs_to :employee
belongs_to :position
Форма редактирования полей моего сотрудника настроена для возвратафлажки для возможных позиций, которые мог бы занимать сотрудник, но возвращает все позиции во всем приложении и не обновляет данные, когда я нажимаю submit:
- Position.all.each do |position|
= check_box_tag :position_ids, position.position_name, @employee.positions.include?(position), :name => 'employee[position_ids][]'
= label_tag :position_ids, position.position_name
Обновление контроллера моего сотрудника def добавило строку для have_many: через ассоциацию.Это где я должен сузить возврат до текущих вошедших в систему сотрудников и должностей пользователя?
@employee.attributes = {'position_ids' => []}.merge(params[:employee] || {})