2016-09-14 80 views
1

这一个哲学问题的位:处理传入的数据与别名

我们处理大量的数据,通过不同的渠道进来。 我们正在分析这些数据以试图理解它。

例如

class Product 
attr_accessible :name, :description, :price 
has_one :company 
end 

class Company 
attr_accessible :name, :domain, :phone, :email 
validates_uniqueness_of :name, :domain 

end 

当数据进来的公司名称可以有所不同。

例如

"Acme Limited" 
"Acme Ltd" 
"Acme Ltd (Birmingham)" 
"Acme Ltd (London)" 

这些都是基本相同的公司,我们希望将它们存储本身和自动分配它们(一旦我们确定了一个别名)。

这些变化取决于第三方将数据存储在其API或我们无法控制的网站上的方式。

什么是识别这些别名,然后在他们到达时将其转换为合适的公司的好方法?

我想过把另一个类作为关联添加到处理别名的公司。 或者,在表中添加一个jsonb列,我们可以保存一个别名数组,以便如果有任何匹配,我们可以将它们带入。

只是好像应该有一个很好的解决方案,我不是发现。

任何人遇到这种类型的问题,并拿出一些优雅和美丽的东西?

+0

'将jsonb列添加到表格中'对我来说听起来不错 –

回答

0

我会介绍另一个模型,比如说Alias,其中引用Company,基本上有两列,company_idalias。然后可以调用company.aliases来检索别名列表。

这样就会很容易/快,当你从什么地方得到一个别名名称查找公司:

Alias.find_by_alias(value_got_from_3rd_party).try(:company) 

显然,应该有aliases表真名的记录,以及用于查找工作顺利。