如何在 Rails 中手动创建新的多对多条目

How to manually create new many-to-many entries in Rails

我有一个模型 Movies 和一个 Model Genres,它们之间存在多对多关系:Movie has_and_belongs_to_many :genres 和 Genres has_and_belongs_to_many :movies 当然还有一个join table:

  create_table "genres_movies", id: false, charset: "utf8mb4", force: :cascade do |t|
    t.bigint "genre_id", null: false
    t.bigint "movie_id", null: false
    t.index ["genre_id", "movie_id"], name: "index_genres_movies_on_genre_id_and_movie_id"
    t.index ["movie_id", "genre_id"], name: "index_genres_movies_on_movie_id_and_genre_id"
  end

我现在有一种方法可以根据一些例程 select 流派,然后我想手动将这些流派分配给电影。以下不起作用:

new_movie_params[:genre_ids] = genre_array
movie.update(new_movie_params)

我收到以下错误:

ActiveRecord::RecordNotFound (Couldn't find all Genres with 'id': (, ) (found 0 results, but was looking for 2). Couldn't find Genres with ids , .):

我认为我需要以某种方式手动更新连接 table - 我有电影 ID 和流派 ID - 但我不知道该怎么做?

在确保 genre_array 实际包含 ID(有效 ID)时工作完美:)