删除has_many:通过链接关联

时间:2011-05-20 20:38:25

标签: ruby-on-rails has-many-through

我正在尝试删除通过Actor模型关联的MovieAppearance之间的关联。我想通过单击actor的编辑页面上的链接来完成此操作。我找到了我需要使用的方法(@actor.movies.delete()),但我不确定在哪里放置它以及如何获得正确的movie id。

以下是演员表格中影片领域的部分内容:

<%= f.label :title %>
<%= f.text_field :title %>
<%= f.check_box :_destroy %>
<%= f.label :_destroy, "Remove Movie" %>

如果我将:allow_destroy => true添加到我的Actor模型中,则上述方法有效,但我想要做的是重写它以便不删除电影,只删除关联。

2 个答案:

答案 0 :(得分:1)

看看这里: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

  

collection.delete(object,...)   通过删除它们,从集合中删除一个或多个对象   联接表中的关联。这个   不破坏物体。

答案 1 :(得分:0)

当然,我需要做的是删除外观而不是电影对象本身。

<% @actor.appearances.each do |appearance| %>
  <div class="field">
    <%= link_to appearance.movie.title, appearance.movie %>       
    <%= link_to 'Delete', appearance, :confirm => 'Are you sure?', :method => :delete %>
  </div>
<% end %>