需要一些关于rails中模型关联的帮助

时间:2011-06-27 18:42:23

标签: ruby-on-rails ruby activerecord associations models

我的方案是我有一个用户模型,联系模型和profile_url模型。

以下是b \ w用户和联系模式的关联。

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作为我的个人资料的公共网址。现在,当我在联系人列表中添加您作为联系人时,您将被分配一个私人网址到我的个人资料(相同的个人资料,只有一个独特的网址,仅供您私人使用)。因此,基本上有两种方式或两种方式来访问我的个人资料,公共网址和私人网址。这有点难以解释为什么我需要分离网址,但只是想想如果你想知道没有别的办法。

我看到这个东西的方式是通过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到联系人所属的用户的相同个人资料)。配置文件表有一个类型,user_id,contact_id,url字段。我不知道这是否是处理这种情况的最佳方法,但如果你能在这种情况下帮助我,那就太棒了。

1 个答案:

答案 0 :(得分:1)

只要user has_many :contacts, :through=> :user_contacts我觉得user_contacts是在用户的联系人列表中为每个联系人存储私人网址的最佳位置。公共URL应该存储在users表中(每个用户一个)。