将字符串字段转换为集合集

时间:2016-05-13 16:19:13

标签: ruby-on-rails activeadmin

背景信息:当用户在网站上注册时,他们必须提供电子邮件。目前,请将其电子邮件域名与我在管理员中的公司的电子邮件域进行比较。如果域名相同,那么我将用户列入公司"员工列表。"域名为string

目标:为公司分配多个域。

如何创建一个包含多个域的字符串字段?我已经尝试用逗号分隔域并解析字符串以查看用户输入的域是否有效,但似乎必须有更好的方法来执行此操作。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

理想情况下,您可以为Domain创建一个新的模型和数据库表,其中domain 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])

请注意:您可能有公司允许用户使用个人电子邮件,例如example@gmail.com。在这种情况下,域名可能在多个公司之间重复。