2012-10-15 69 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 

它會在您銷燬課程時自動刪除相關表項。