2016-09-14 16 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

Companyを参照し、基本的に2つの列、company_idおよびaliasを持つ別のモデル、たとえばAliasを紹介します。次に、company.aliasesに電話してエイリアスのリストを取得することができます。

あなたがどこからエイリアス名を受信したときに会社を検索するために、高速/簡単だろうその方法:検索のためだけでなくaliasesテーブルの本当の名前を持つレコードが存在する必要があり、明らかに

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

スムーズに作業する。

関連する問題