2012-04-02 99 views
0

我已經閱讀了大量文檔,並且由於某些原因,這仍然不清楚。rails 3:需要說明哪些控制器需要用於HABTM關係

我通過用戶和事件上的HABTM關係定義了以下設置,用戶表,事件表和M2M表Events_Users。當用戶在事件索引或顯示頁面上註冊事件時,是否應該轉到爲Events_Users創建的控制器中的新操作?如果是這樣,是否應該轉到僅用於將參數傳遞給創建操作的New操作?還是應該直接進行創建操作?

任何關於最佳實踐的澄清將不勝感激!

感謝

回答

0

我想,有辦法做到這一點可能是以下幾點:

我會接受的情況下讓用戶爲嵌套資源是這樣的:

class Event < ActiveRecord::Base 
    has_many :users 
    accepts_nested_attributes_for :events 
end 

這你可以這樣在EventsController中定義一個自定義動作:

class ApplicationController < ActionController::Base 
    def add_user_to_event 
    @event = Event.find(params[:event]) 
    @user = User.find(params[:user]) 
    @event.users << @user 
    @event.save 
    end 
end 

並且在您的表單中,您將有一個link_to與當前事件和用戶作爲參數的此操作。

+0

感謝您的回覆,所以如果我將這個功能添加到EventsController中,當我需要從另一個對象引用它時會發生什麼?我如何決定將它放在EventsController而不是UsersController上?甚至是一個獨特的控制器EventsUsersController?那是我感到困惑的地方 – turbo2oh 2012-04-04 13:30:42

+0

在用戶控制器中定義的這個動作只指出你定義一個名爲/ events/add_user_to_event的路由。你應該可以從任何你喜歡的地方調用這條路線。 我認爲你提到的選擇只是一個偏好問題:你是從用戶視圖還是從事件視圖添加事件?隨你便。您甚至可以在UsersController下定義另一個操作調用add_event_to_user,這相反。 – bruno077 2012-04-04 13:36:21

+0

嗯所以這種東西真的沒有最佳實踐?我覺得它必須提出很多。 – turbo2oh 2012-04-06 00:18:09