使用别名

时间:2016-09-14 12:55:31

标签: ruby-on-rails ruby web-scraping

这个哲学问题:

我们处理通过不同渠道传入的大量数据。 我们正在解析这些数据以试图弄清楚它。

e.g。

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

当数据进入时,公司名称可能会有所不同。

e.g。

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

这些基本上都是同一家公司,我们希望将它们存储起来并自动分配它们(一旦我们确定了别名)。

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

识别这些别名然后在它们到达时将它们转换为适当的公司有什么好方法?

我考虑过添加另一个类作为处理别名的公司的关联。 或者,在表中添加一个jsonb列,我们可以保留一组别名,这样如果有任何匹配,我们就可以将它们带入。

似乎应该有一个很好的解决方案,我找不到。

任何人遇到这类问题,想出一些优雅而美丽的东西?

1 个答案:

答案 0 :(得分:0)

我会介绍另一个引用Alias的{​​{1}}模型,基本上有两列,Companycompany_id。然后可以调用alias来检索别名列表。

这样,当您从某个地方收到别名时,查找公司会很容易/快速:

company.aliases

显然,Alias.find_by_alias(value_got_from_3rd_party).try(:company) 表中应该有一个带有真实姓名的记录,以便查找顺利进行。