2016-05-13 82 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]。在这种情况下,域名可能会在多个公司之间重复。