2011-08-16 92 views
1

我有一個使用User模型和House模型(這就像一個組)的Rails 3.1應用程序。我在這兩者之間建立了一個多對多關係,加入模型爲Membership,並且有一些方法可以管理連接模型中某個用戶的角色。特定的一對多關係

但我的問題是,用戶只有一個房子,而不是很多。所以我總是必須先做user.houses.first才能找到他的房子(我已經建立了一個幫助人的房子),但設計不好,所以我試圖把has_one :membershiphas_one :house, :through => :membership而不是has_many :membershipshas_many :houses, :through => :memberships。但是,每次嘗試訪問User時,都會出現錯誤。

如何才能建立這個一對多的關係,像我試圖做的連接表?

預先感謝您。

+0

我很困惑,在你的數據庫模型中,用戶可以只有一個房子還是很多房子? – Cygnusx1

回答

2

如果您打算使用一對多關係,那麼關聯應該是。

的has_many:成員資格

的has_many:用戶:通過=>:會員資格

用戶

HAS_ONE:membersh IP

HAS_ONE:房子:通過=>:會員

+0

這就是我所嘗試的,但沒有奏效...... – Cydonia7

+1

你是什麼意思「沒有工作」?它看起來對我有效。 – socjopata

+0

我收到了一條錯誤消息。但是現在它在重新啓動服務器後運行。 – Cydonia7

0

我不能想辦法與關係這樣做,但你可以把它作爲複數,然後就在用戶定義的房子:

class User 
    has_many :memberships 
    has_many :houses, :through => :memberships 

    def house 
    houses.first 
    end 
end 
+0

我試着用'delete_all'和'<<'實現'house =',但這有點棘手,不是嗎? – Cydonia7

+0

不應該太困難,你不能只是做房屋= [new_house] – Yule

+0

@Skydreamer它是棘手的,但你的圖式不適合一對多的關係。 – Serabe