基本上,我有3个数据表。 “jobs”,“期间”和相关表格“JobPeriodAssociation”。
现在,JobPeriodAssociation显示作业和期间的所有可能组合。例如。我有2个作业(j1,j2)和2个句点(t1,t2),表格将显示4行:j1t1,j1t2,j2t1,j2t2。
如果我现在在“句点”表中添加句点,它会通过添加(预定义的)第3期/作业组合自动更新“JobPeriodAssociation”表。 .A。 j1t1,j1t2,j1t3,j2t1,j2t2,j2t3。
这是通过periods_controller
中的更改操作完成的def change
@mynumber_of_periods = params[:mynewnumber].to_i
@number_of_periods = Period.count
number_of_missing_periods=@mynumber_of_periods - @number_of_periods
if number_of_missing_periods > 0
@jobs = Job.all
@nanns = Nann.all
(1..number_of_missing_periods).each do |number|
name="t#{number+@number_of_periods}"
@new_period=Period.create!(name: name)
@jobs.each { |jo|
JobPeriodAssociation.create(job_id: jo.id, period_id: @new_period.id, apples: 2, bananas: 2, milk: 2, beer: 2)
}
end
end
(+显然路线和索引视图中有一些小的改动)
创建作业时,我使用多个参数创建它(请参阅此处附带的图像:TABLES)截至目前,参数不会被推送到JobPeriodAssociation表,我只想出了一个方法硬编码,如本主题的第一个清单所示
@new_period=Period.create!(name: name)
@jobs.each { |jo|
JobPeriodAssociation.create(job_id: jo.id, period_id: @new_period.id, apples: 2, bananas: 2, milk: 2, beer: 2)
}
因此,JobPeriodAssociation表中每个新创建的条目都包含参数2,2,2,2。 但是,我想将创建的作业(包括其参数)推送到附加图像中显示的JobPeriodAssociation。你有什么想法吗?
非常感谢你的帮助!
答案 0 :(得分:1)
你有没有在Period和Job之间做一个Join,那就是JobPeriodAssociation? 也许我误解了你的问题,我告诉我很抱歉。请让我们讨论一下,以帮助您解决问题。
您可以通过以下链接更好地了解我的意思:
http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association
如果这是你试图解决的问题,那么最好的方法是尽管JobPeriodassociation有一个has_many。这是完整解释的链接。
联接将包含以下内容
工作模式
has_many :jobperiodassociations
期间模型
has_many :jobperiodassociations
JobPeriodAssociation
belongs_to :job
belongs_to :period => all the entries of jobperiodassociations will be retrieved with the foreign key job_id in jobperiodassociations
工作实例:
job = Job.new
job.jobperiodassociations = [] => all the entries of jobperiodassociations will be retrieved with the foreign key job_id in jobperiodassociations
期间实例
period = Period.new
period.jobperiodassociations = []
jobperiodassociations实例有两个外键,一个用于工作,一个用于句点。
http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association