【发布时间】:2021-11-15 17:51:52
【问题描述】:
我有一个模型 Movies 和一个 Model Genres,它们之间存在多对多关系:Movie has_and_belongs_to_many :genres 和 Genres has_and_belongs_to_many :movies 当然还有一个连接表:
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
我现在有一种方法,我可以根据一些例程选择流派,然后我想手动将这些流派分配给电影。以下方法不起作用:
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 , .):
我认为我需要手动更新连接表 - 我有电影 ID 和流派 ID - 但我不知道该怎么做?
【问题讨论】:
-
genre_array 是否真的包含一个有效 id 的数组?
-
ha - 这就是问题所在 - 它包含记录,而不是 ID。谢谢!
标签: ruby-on-rails relationship