gpt4 book ai didi

ruby-on-rails - 创建或更新与 has_many :through 的关联

转载 作者:数据小太阳 更新时间:2023-10-29 07:18:04 25 4
gpt4 key购买 nike

假设我有两个模型,Director 和 Movie,还有一个名为 Directions 的连接模型。它们是这样定义的:

电影:

class Movie < ActiveRecord::Base
has_many :directions
has_many :directors, :through => :directions
end

导演:

class Director < ActiveRecord::Base
has_many :directions
has_many :movies, :through => :directions
end

方向:

class Direction < ActiveRecord::Base
belongs_to :movie
belongs_to :director
end

当我创建电影时,我希望能够使用提供的信息(名称和 imdb_id)创建导演,或者根据 imdb_id 找到现有导演并将其与电影记录相关联。

从本质上讲,我永远不想删除或编辑导演。我只希望能够根据他的 imdb_id 创建一个新导演,如果他不存在,或者在我创建或编辑电影时与一个预先存在的导演相关联。

我的问题是,如何在 View / Controller 中将所有这些链接起来?

accepts_nested_attributes_for 工作正常除了您在编辑我不想要的电影时实际上可以编辑导演的名字。我完全没有兴趣更新/销毁实际的董事,只有协会。

最佳答案

您的电影实例有一个 director_ids 数组,其中包含关系的 ID。因此,您可以轻松列出所有董事,例如哪些复选框,并要求用户检查关系...

<% Director.all.each do |director| %>
<%= check_box_tag 'movie[director_ids][]', director.id, @movie.directors.include?(director) %>
<%= director.name # or whatever (title, etc) %>
<% end %>

<%= hidden_field_tag 'movie[director_ids][]', '' %>

(hidden_​​tag 是当用户取消选中所有框时,因此 director_ids 将为空。)

关于ruby-on-rails - 创建或更新与 has_many :through 的关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4846332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com