2012-10-15 68 views
2

我有一个连接2个表的连接表。它有2列:user_id和course_id。表的名称是:course_sub_managers。该表没有索引。那么,如何删除满足条件的所有行,其中course_id =某个变量?至于现在我用:Rails - 从非索引表中删除行

sql = "DELETE FROM course_sub_managers WHERE course_id = " + @course.id.to_s 
ActiveRecord::Base.connection.execute(sql) 

有没有Rails的方式来写它?

+0

为什么不只是抓住课程,并通过关联删除? – Doon

回答

1

我怀疑你有,你已经写了类似的课程模式:在这种情况下

has_many :course_sub_managers 
has_many :users, through => :course_sub_managers 

你可以使用:

@course.course_sub_managers.delete_all 
+0

难道你不是指'@ course.course_sub_managers.delete_all'? – Mischa

+0

是的,这似乎更好 – Albin

+0

太好了。非常感谢你。 –

0

听起来你只是想处理的缺失课程?在关系上使用:dependent =>:destroy。

has_many :course_sub_managers, :dependent => :destroy 

它会在您销毁课程时自动删除相关表项。