2016-05-13 63 views
0

背景信息:當用戶在網站上註冊時,他們必須提供電子郵件。目前,我們將他們的電子郵件域名與我在管理員中擁有的公司的電子郵件域進行比較。如果域名相同,那麼我將用戶列入公司的「員工名單」。域名的類型爲string將字符串字段轉換爲集合集

目標:將多個域分配給公司。

如何創建一個字符串字段,將採取多個域?我試着用逗號分隔域名並解析字符串,看看用戶輸入的域名是否有效,但似乎必須有更好的方法來做到這一點。有什麼建議麼?

回答

0

理想情況下,您可以爲域belongs_to公司和公司has_many域創建一個新的模型和數據庫表。

如果這是不可能的,如果用戶選擇他們所在的公司並且您只查找一個公司記錄進行驗證,那麼您的解決方案並不是太差,但是您看起來像按域名查找公司名稱,在這種情況下,

如果您必須按域查找公司,則可以選擇不同的數據庫。使用MySQL,你可以使用這樣的功能FIND_IN_SET:

Company.where("FIND_IN_SET(?, domain)", params[:domain]) 

在Postgres裏,你有這個(我無法測試,所以可能需要一些組裝):

Company.where("? = ANY (string_to_array(domain,',')", params[:domain]) 

請注意:您可能有公司允許用戶使用個人電子郵件,如[email protected]。在這種情況下,域名可能會在多個公司之間重複。

相關問題