2010-11-26 62 views
0

我有三個表/模型。用戶,聯盟和聯盟會員。後者是一個連接表,其中描述:Alliance has_many:用戶通過:Alliance_Membership關係。 (:用戶有一個:聯盟)在rails中訪問連接表數據:通過關聯

一切正常,但Alliance_Membership現在有一個額外的字段,稱爲「排名」。我正在考慮訪問這一小段信息(排名)的最佳途徑。

看來,當我做「alliance.users」的時候,聯盟是用戶當前的聯盟對象,我得到了所有的用戶信息,但是我沒有得到排名。我只獲取用戶模型的屬性。現在,我可以創建一個助手或像getUserRole這樣的函數來基於用戶爲我做這件事,但我覺得有更好的方法可以更好地處理Active Record關聯。有沒有更好的方法?

Thanx for reading :)

回答

1

您的關聯都是錯的 - 他們不應該有大寫字母。這些是規則,我在其他的答案在哪裏見過我告訴你如何設置這個較昨日:)

類名:始終駝峯狀AllianceMembership(NOT Alliance_Membership!)

表名,變量名,方法和協會:始終強調和小寫:

has_many :users, :through => :alliance_memberships 

要找到一個給定的聯盟給定用戶的等級(在@alliance和@user舉行),做

@membership = @ alliance.alliance_memberships 。找_by_user_id(@ user.id)

你可能確實是在聯盟的方法把這個包:

def rank_for_user(user) 
    self.alliance_memberships.find_by_user_id(user.id).rank 
end 
+0

別擔心,我使用正確的名稱,如你形容他們,我只是用錯了名字,而在這裏描述它:)。我實際上找到了一個更好的方法來做到這一點,比如「alliance = Alliance.find(alliance.id,:include => [:users])」,現在我得到了我需要的每一個信息。感謝您的回覆:) – Spyros 2010-11-26 10:19:53

相關問題