2013-06-05 75 views
0

我有一個複雜的關係,我很難在意見中代表。我需要一些幫助,找出建立關係的最佳方式,這可能會解決我的大部分問題。已經和屬於很多通過

我有一個圖表這裏:Diagram

基本上我試圖建立應用程序的動態測量類型。管理員可以添加問題和問題選項。當用戶登錄時,他們可以回答這些問題。他們只能爲每個問題選擇一個答案,但會有一個部分,他們可以選擇他們從「匹配」中接受的任何答案。這將用於匹配用戶。

例如:

問:

你最喜歡什麼顏色? A)紅色B)黃色C)藍色

比利選擇紅色,但表示他會接受紅色或黃色作爲比賽的答案。

約翰選擇黃色,並說他會接受紅色或黃色的答案。因爲他們都選擇了彼此相互「接受名單」的顏色,那麼這兩個問題就會相互匹配。

建立關係並在視圖中表示它的好方法是什麼?我很難在這一個包裹着我的大腦...

謝謝!

回答

1

我不知道你是否可以改變你的模式,但如果是的話,我認爲你可以做到這一點。

我會嘗試做一些象下面這樣:

模型(表):

Users 
    -id 

Questions 
    -id 

Choices 
    -id 
    -question_id 

Answers 
    -id 
    -user_id 
    -choice_id 
    -question_id 
    -is_acceptance (boolean) 

User has_many answers 
Qestion has_many choices 
Choice belongs_to question 
Answer bleongs_to user , question 

然後你可以保存所有的答案在一個表和標誌(true或false)僅主的答案。 畢竟你可以編寫自己的邏輯來回答相同的答案,接受答案等。

+0

是的,我很樂意改變模式。我有一種習慣,有時候會讓事情變得複雜。我不需要這樣做嗎?我如何只顯示與登錄用戶相關的問題/答案?對不起愚蠢的問題我意識到!再次感謝 – Sean

+0

HABTM對許多協會來說都是麻煩[鏈接](http://guides.rubyonrails.org/association_basics.html#the-has_and_belongs_to_many-association)我沒有看到你可以像那樣關聯。 btw在habtm你需要新的連接表。如果您需要與acceptance_answer不同的答案,則可以構建新模型(與答案几乎相同)。所有的答案都與用戶相關聯,我認爲沒有問題只顯示記錄的答案:) – Karol85