Rails - 删除交集表中的单个记录habtm

时间:2010-07-28 11:39:12

标签: ruby-on-rails has-and-belongs-to-many

我有habtm关系(作业< assignments_candidates>候选人)

我希望能够从作业中删除一名候选人。 这是我到目前为止的代码

 @assignment = Assignment.find(:first,
  :joins => :candidates,
  :select => "assignments_candidates.*",
  :conditions => ["assignments_candidates.candidate_id = ? AND assignments_candidates.assignment_id = ?", 
    params[:candidate_id], params[:assignment_id]]
  )
  @assignment.destroy

目前,我认为这样做会破坏对象而不是交集表中的记录

任何想法?

谢谢,Alex

2 个答案:

答案 0 :(得分:13)

以下是我如何做以备将来参考。

  assignment = Assignment.find(params[:assignment_id])
  candidate = assignment.candidates.find(params[:candidate_ids])
  assignment.candidates.delete(candidate)

答案 1 :(得分:-1)

您是否在相关模型的:dependent => :destroy(或has_many)关系中添加了has_and_belongs_to_many限定符?