大规模的创造和habtm的联合

时间:2012-06-19 01:49:18

标签: ruby-on-rails

我有3个模型(Genre,Mood,Tempo),每个模型与另一个模型(Track)具有has_and_belongs_to_many关联。用户可以上传包含每个曲目信息的Excel文件,我希望能够创建相应的记录并在我的更新方法中一次性添加关联。

我正在阅读电子表格中的每一行,并创建包含与每首曲目相关联的流派,情绪和节奏的数组,但我不确定如何正确创建关联。

类似的东西:

1.upto @worksheet.last_row_index do |index|
  row = @worksheet.row(index)
  genres = row[6].split(", ")
  genres.each do |g|
    Genre.find_or_create_by_name(g) // not sure what to do here exactly
  end
end

Track ID是row [0]。

我需要创建每个类型(如果它不存在),并将该轨道与每个类型相关联。如果类型确实存在,那么我只需要创建关联。情绪和节奏相同。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这似乎就是这样做的。

1.upto @worksheet.last_row_index do |index|
  row = @worksheet.row(index)
  track = Track.find(row[0])
  genres = row[6].split(", ")
  genres.each do |g|
    track.genres << Genre.find_or_create_by_name(g)
  end
end