Мне нужна помощь в разработке rails, над которой я работаю, используя rails 3.
Это приложение было дано мне несколько месяцев назад сразу после его появления, и с тех пор я очень полюбил Ruby.
У меня есть набор проектов, которым можно назначить ресурсы через таблицу команд.
Запись команды имеет дату начала и дату окончания (т. Е. Когда ресурс был назначен и отменен из проекта).
Если пользователь был назначен и отозван из проекта, а позднее он будет возвращен обратно в проект,
вместо перезаписи даты окончания я хочу создать новую запись в таблице «Команды», чтобы иметь возможность отслеживать даты, когда ресурс был назначен определенному проекту.
Итак, мой вопрос: возможно ли иметь несколько записей в: has_many через ассоциацию?
Вот мои ассоциации:
class Resource < ActiveRecord::Base
has_many :teams
has_many :projects, :through => :teams
end
class Project < ActiveRecord::Base
has_many :teams
has_many :resources, :through => :teams
end
class Team < ActiveRecord::Base
belongs_to :project
belongs_to :resource
end
У меня также есть следующая функция в Project.rb:
after_save :update_team_and_job
private
def update_team_and_job
# self.member_ids is the selected resource ids for a project
if self.member_ids.blank?
self.teams.each do |team|
unless team.deassociated
team.deassociated = Week.current.id + 1
team.save
end
end
else
self.teams.each do |team|
#assigning/re-assigning a resource
if self.member_ids.include?(team.resource_id.to_s)
if team.deassociated != nil
team.deassociated = nil
team.save
end
else
#de-assigning a resource
if team.deassociated == nil
team.deassociated = Week.current.id + 1
team.save
end
end
end
y = self.member_ids - self.resource_ids
self.resource_ids = self.resource_ids.concat(y)
self.member_ids = nil
end
end
end