【问题标题】:How to manually create new many-to-many entries in Rails如何在 Rails 中手动创建新的多对多条目
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多