【发布时间】:2011-04-25 00:00:39
【问题描述】:
This question 上的 SO 似乎与我的问题有关,但我不确定我的问题是否得到回答。
一个地址可以属于多个模型(UserProfile 和 Event)
实现这个的正确方法是什么?
基本表:
user_profiles(id)
events(id)
实现addresses表的选项:
addresses(id,user_profile_id,event_id)
这种方法似乎很笨拙,因为如果明天该地址需要属于另一个模型,我必须添加该 id 字段。
另外,我还不知道,但是添加一个新的 id 字段可能会导致一些代码 也要打破?addresses(id,model_type,model_id)
这是多态的,对。我不知道为什么,但不知何故我对此感到警惕?其他方法可以做到这一点?
注意:
我想我可以制作这样的表格:
user_profiles(id,address_id)
events(id,address_id)
但是,这意味着同一个address_id 可以属于不同的模型。
我想不应该是这样,因为例如需要更改事件的地址,但它不应该影响user_profile 的地址。
所以会是这样的(我认为这是错误的):
@current_user_profile.address = some_new_address
#this would have changed the address for both the user_profile *and* the event
@current_user_profile.save
【问题讨论】:
标签: ruby-on-rails activerecord