1

我新的Rails和您的幫助和諮詢會,因爲我發現這一具有挑戰性的說明on Rails的協會 - 軌道4

目的大加讚賞:我想事件的創建者能夠爲一個創建的事件選擇多個用戶作爲 主機(就像facebook允許頁面的創建者 能夠選擇用戶作爲創建頁面的管理員一樣)。下面是如何顯示我的模型和模式?

我的目標是建立像這樣的圖像。事件1我可以選擇伊恩&傑西主機,事件2我也可以重新選擇伊恩作爲主機,然後選擇艾瑪

enter image description here

這是我想象的這麼遠建(你的指導,將不勝感激):

models 
user.rb 
has_many events 

event.rb 
belongs_to user 

host.rb 
belongs_to user 
has_many events 

模式

users 
name 
email 

events 
title 
address 
user_id 

hosts 
user_id 
event_id 
+0

是你的管理員也是'用戶'模型?或不同的模型? – sa77

回答

1

開始寫這篇評論,但意識到它變得太羅嗦了。

您的型號壞了... event有很多用戶..它不是belong_to單個user

你所擁有的是用戶和事件之間的多對多關係,需要通過連接表(又名關聯/聯結表)解決。儘管這違背了rails慣例,但你已經用某種方法解決了這個問題。

你想要的是一樣的東西:

模式

user.rb

has_and_belongs_to_many :events 

event.rb

has_and_belongs_to_many :users 

,並創建一個連接表引用兩個模型

users table 
    name 
    email 

events table 
    title 
    address 

events_hosts table 
    user_id 
    event_id 

導軌約定是爲連接表由連接表也將加入詞法下令這兩個名字被命名爲 - 即主機前的事件,串聯一起給events_hosts

或者,你也可以創建一個連接模型,如果你喜歡:

EventHost 

belongs_to :user 
belongs_to :event 

和修改has_and_belongs_to_manyhas_many :event_hosts在其他兩種模式 - 數據庫架構將保持不變。

+0

啊!謝謝大衛!會嘗試這種方式 – ARTLoe