私のシナリオは私はユーザーモデル、コンタクトモデル、およびprofile_urlモデルを持っています。レールのモデルアソシエーションに関していくつかの助けが必要です
以下は、ユーザーと連絡先モデルの関連付けです。
user has_many :contacts, :through=> :user_contacts
user has_many :user_contacts
contact has_many :users, :through=>:user_contacts
contact has_many :user_contacts
user_contact belongs_to :user
user_contact belongs_to :contact
これまでのところ良いです。問題は、これらのモデルをprofile_urlモデルに関連付けるときに発生します。このシナリオは、ユーザーがアプリケーションに登録されるたびに、パブリックプロファイルURLとなるプロファイルURLが割り当てられます。だから私がサインアップした場合、私のプロフィールに公開URLとしてhttp://www.mysite.com/mike.fererraのようなものがあります。今すぐ連絡先リストに連絡先を追加すると、私のプロフィールに私用のURLが割り当てられます(同じプロフィールです。あなたには一意のURLが与えられます)。だから基本的に私のプロフィール、公共のURLと私的なURLにアクセスする2つの方法またはむしろ2つのURLがあります。どうして私はURLを分離する必要があるのか説明するのは難しいですが、あなたが疑問に思っているなら他の方法はないと思うだけです。
私がこのことを見る方法は、以下のようなSTI(単一テーブル継承)です。
ProfileUrl < ActiveRecord::Base
PublicUrl < ProfileUrl
PrivateUrl < ProfileUrl
profile_url belongs_to :user
user has_one :profile_url
profile_url has_one :public_url
profile_url has_many :private_urls
private_url belongs_to :contact
contact has_one :private_url
私は一言で言えば物語は、ユーザとそのプロファイル(のみ、そのユーザの連絡先に具体的な世界のための公開URLとプライベートURL、各連絡先にアクセスする方法のプロフィールを中心に展開し、それが理にかなって願っています連絡先が所属するユーザーと同じプロファイルへの固有のプライベートURLを持ちます)。プロファイルテーブルには、type、user_id、contact_id、urlフィールドがあります。私はそれがこの状況を処理する最善の方法かどうかはわかりませんが、あなたがこの状況で私を助けることができれば素晴らしいと思います。