レールのオブジェクトのグローバル識別子が必要なシステムがあります。グローバルIDは、複数のオブジェクトにわたって共有される数値(または英数字)です。オブジェクトを保存すると、オブジェクトとobject_idに基づいてグローバル識別値が挿入されます。例えばのでRails 3.1のさまざまなオブジェクトのグローバルな識別のモデリング
:
location id=3
id=15
arc_type='location'
arc_id=3
arc_value=loc-3
そこで問題は、私がOBJECT_TYPEとのobject_idの複合外部キーを使用してにhas_oneを行うことができます。または、私はオブジェクトの値、短縮された名前と元のオブジェクトのIDのような外部キーが必要ですか?
おそらく、外部キーとしてmd5ハッシュなどの別のシナリオを使用します。
これは多型関連を行う候補ですか?それはhas_oneよりもhas_many(pictuersやコメントなど)の方が適しているようです。誰もが多形性の凍結を伴うhas_oneをやったことがありますか?
THX
編集 - OBJECT_ID名前は私がhas_one
以来、Railsの複合外部キーについてはよく分からない
すてきな答えです。実際に多相関連で 'has_one'を設定できるようです:http://guides.rubyonrails.org/association_basics.html#has_one-as –
これを管理する中央テーブルがありますか?私はglobals_listsというテーブルを持っていますが、これらのglobal_idsのリストがありますが、これがどのようにそれに絡み合うかはわかりません。現在の実装では、global_identificationという中央テーブルを使用しています – timpone
中央テーブルは必要ありません。代わりに、各モデルには 'uuid'カラムがあります(これは[migration](http://guides.rubyonrails.org/migrations.html#creating-a-migration)で追加できます)。 – Ahmish