2013-06-23 143 views
0

當前學習Rails,所以要溫和。Rails 3.0 has_many和belongs_to關聯頭痛。

我要檢查之前,我去遠是我得到這個權利:

構建應用程序,允許我們的客戶'登錄,並創建一個報價。然後,'供應商'(在這種情況下,會議場地所有者)可以查看報價,並用提案回覆他們,客戶將能夠查看。每個供應商帳戶都可以選擇擁有一個或多個屬於它的「場地」(例如,如果他們運行一系列場地),每個提案都將來自特定場地。

其他複雜的問題,我稍後可能會遇到,這看起來是正確的關係呢?

P.S我意識到下面的代碼實際上並不工作,我只是把它放在了這個位置上,而我試圖讓我的頭部繞過它。

Customer (will be a type of user) 
has_many :quotes 
has_many :proposals, :through => :venue 

Supplier (will be a type of user) 
has_many :venues 
has_many :proposals, :through => :venue 

Venue 
belongs_to :supplier 
has_many Proposals 

Quote 
belongs_to :customer 

Proposal 
belongs_to :venue 

的基本表:

Customer 
    id 

Supplier 
    id 

Quote 
    id 
    customer_id 

Venue 
    id 
    supplier_id 

Proposal 
    id 
    venue_id 

有可能是一個更好的辦法做到這一點,利用has_ones和has_and_belongs_to_many等,但我不知道。

感謝

+0

你怎麼想'與'有關客戶' venues'?因爲如果你想讓顧客通過場館有很多提案,顧客也應該有很多'場地'。 –

+0

客戶可以從任何場所提取提案 - 也許我不需要通過?我可以刪除這兩個嗎? –

+0

所以你應該至少從'Customer has_many:proposals'中去掉':through'。你希望你的'供應商'與提案有關嗎? –

回答

0

好了,我想應該是這樣的:

Customer 
    has_many :quotes 
    has_many :proposals 

Supplier 
    has_many :venues 
    has_many :proposals, :through => :venues 

Venue 
    belongs_to :supplier 
    has_many :proposals 

Quote 
    belongs_to :customer 

Proposal 
    belongs_to :venue 
    belongs_to :customer 

和DB模式:

Customer 
    id 

Supplier 
    id 

Quote 
    id 
    customer_id 

Venue 
    id 
    supplier_id 

Proposal 
    id 
    venue_id 
    customer_id 
相關問題