2013-09-27 97 views
0

我正在構建一個Rails應用程序,以允許一個用戶從一個組請求支持。我需要額外的關聯嗎?

Class User 
    has_many :requests 

Class Request 
    belongs_to :users 

當前,用戶點擊不同的鏈接將請求發送到不同的子組。 我想通過讓用戶選擇/取消選擇人來進一步定製。

我是否需要一個關聯才能實現此目的?像...

Class User 
    has_many :sent_requests, class_name 'Request' 
    has_many :received_requests 
    has_many :requests, :through received_requests 

Class Request 
    belongs_to :client, class_name 'User' 
    has_many :received_requests 

Class ReceivedRequest 
    belongs_to :user 
    belongs_to :client 

這似乎是一個在屁股疼痛。我可以只是 - 在請求#新控制器操作中創建一個@users實例變量,沒有任何關聯 - 將它傳遞給視圖,讓表單顯示覆選框 - 讓用戶取消選中人員 - 以某種方式將該變量傳回給創建動作

我想更一般的問題是,我該如何決定我需要添加一個關聯?

最後,這可能是我需要使用嵌套資源的情況嗎?

感謝您的幫助。我是新來的...

回答

0

你應該在這裏使用一個關聯,因爲你要存儲哪些用戶與數據庫中的特定請求相關聯。該關聯是存儲這些與軌道的關係的正確方法。

如果設置正確,關聯實際上很容易管理。在這種情況下,我沒有看到使用嵌套資源的好處。

另一種方法是僅使用修改後的HABTM關聯,但在連接模型中包含一個屬性以指示哪個用戶擁有該請求以及哪個用戶正在接收該請求。

Class User 
    has_many :requests, through: :user_requests 
    has_many :user_requests 

Class Request 
    has_many :users, through: :user_requests 
    has_many :user_requests 

Class UserRequest 
    belongs_to :user 
    belongs_to :request 

在UserRequest中有一個名爲owner的屬性。對發出請求的用戶與請求對象之間的加入,將其設置爲true。與該請求關聯的用戶的其餘部分將接收該請求。

+0

謝謝,這很有道理。 – bluemihai