1

假設我有兩個模型A和B,其中每個模型都有一個has_and_belongs_to_many relationship與另一個。也就是說,一些A對象和B對象是「連接」的。用於破壞兩個ActiveRecord對象之間關係的Rails模式

提供一條途徑來銷燬這種關係的正確方法是什麼?因爲我們並沒有破壞A或B,所以對A或B的控制器進行破壞行爲並沒有什麼意義。有沒有某種標準的方法可以做到這一點?

回答

0

這是我做的:

的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

+0

謝謝!這看起來不錯,只是想知道,如果@a可以有很多b,我怎麼能讓路由包含被刪除的b的id?(可能使用'member do'語法)。 – Nathan

相關問題