1
假設我有兩個模型A和B,其中每個模型都有一個has_and_belongs_to_many relationship
與另一個。也就是說,一些A對象和B對象是「連接」的。用於破壞兩個ActiveRecord對象之間關係的Rails模式
提供一條途徑來銷燬這種關係的正確方法是什麼?因爲我們並沒有破壞A或B,所以對A或B的控制器進行破壞行爲並沒有什麼意義。有沒有某種標準的方法可以做到這一點?
假設我有兩個模型A和B,其中每個模型都有一個has_and_belongs_to_many relationship
與另一個。也就是說,一些A對象和B對象是「連接」的。用於破壞兩個ActiveRecord對象之間關係的Rails模式
提供一條途徑來銷燬這種關係的正確方法是什麼?因爲我們並沒有破壞A或B,所以對A或B的控制器進行破壞行爲並沒有什麼意義。有沒有某種標準的方法可以做到這一點?
這是我做的:
的routes.rb
resources :a do
# use member or collection based on your needs
member do
# member creates a path like:
# /a/[:id]/destroy_a_b
delete :destroy_a_b
end
# OR
collection do
# collection creates a path like:
# /a/destroy_a_b
delete :destroy_a_b
end
end
然後在你的控制器:
def destroy_a_b
# with member you can do:
@a = A.find(params[:id])
# but caution: you may not want to expose A outside of white-listed params
# do your destruction
end
您可以在文檔閱讀更多: http://guides.rubyonrails.org/routing.html#adding-more-restful-actions
謝謝!這看起來不錯,只是想知道,如果@a可以有很多b,我怎麼能讓路由包含被刪除的b的id?(可能使用'member do'語法)。 – Nathan