2012-01-23 78 views
0

我有兩個模型,用戶& offline_user和 我想使用下拉選擇控件(如collection_select)從兩個模型的內容的組合列表中選擇一個項目。在一個選擇列表中組合多個模型

我該怎麼做?


它們非常相似,都包含first_name,last_name,電子郵件地址和電話號碼。但是,對於用戶模型,電子郵件地址是強制性的,而對於離線用戶模型則不是強制性的。我使用devise進行用戶模型驗證。

這背後的原因是如下,

我使用電子郵件地址作爲Web應用程序登錄,但我也需要照顧誰的電話業務,也許沒有一個電子郵件地址的客戶。所以我希望管理員能夠在不需要電子郵件地址的情況下創建新用戶。

該業務還將列出一些現有客戶,他們不會被要求提供電子郵件地址。我希望能夠導入這個列表。

也許我應該只使用一個模型,但在當時似乎最好將它們分開。建議?

+0

是表結構相似? –

+0

爲什麼在用戶上使用單獨的模型而不是布爾型屬性? – Eric

+0

在上面添加了詳細信息,我可能更願意使用單個模型,也許我會嘗試這樣做,但我相信它會造成它自己的問題。 –

回答

0

如果你使用遷移

create_table :users do |t| 
    t.string :first_name 
    t.string :last_name 
    t.string :email 
    t.string :phone 
    t.boolean :offline 
end 

,然後將模型

class User < ActiveRecord::Base 
    validates :email, :presence => true, :if => "offline == false" 
end 

這將讓你有兩種類型的用戶在一個模型,以及確保正常用戶確實有一個電子郵件地址。

然後,您可以使用普通的User.all.select(:first_name)設施,抓住所有的用戶名

+0

我正在考慮這個方法,稍後我會回覆你們。 –

相關問題