【发布时间】:2012-07-08 23:57:17
【问题描述】:
我需要一些关于我正在使用 rails 3 进行的 Rails 开发的帮助。 这个应用程序是在几个月前刚推出时就给我的,从那以后我就非常喜欢 Ruby。
我有一组可以通过团队表分配资源的项目。
团队记录具有开始日期和结束日期(即资源从项目中分配和取消分配的时间)。
如果用户已从项目中分配和取消分配,并且在以后将其分配回项目中, 我不想重写结束日期,而是想在 Teams 表中创建一个新条目,以便能够跟踪资源分配给某个项目的日期。
所以我的问题是,是否可以通过关联在 :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
【问题讨论】:
-
当然,你可以创建新的,这个有很多,我不明白你的问题。
-
他的“问题”有点难以从他的帖子中梳理出来,但比大多数客户需求收集任务要少,祝你的职业生涯好运。
-
好吧,选错了词,我的意思是如果一个资源已经被关联和解除关联,我如何创建一个新的关联而不是仅仅覆盖已经存在的关联?
标签: ruby-on-rails model-associations