1

3 つのモデル (ジャンル、ムード、テンポ) があり、それぞれに別のモデル (トラック) との 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

トラック ID は行 [0] です。

存在しない場合は各ジャンルを作成し、そのトラックをそれぞれに関連付ける必要があります。ジャンルが存在する場合は、関連付けを作成するだけです。ムードやテンポについても同様です。

ご協力ありがとうございます。

4

1 に答える 1

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
于 2012-06-19T03:21:51.230 に答える