2011-12-10 74 views
0

我现在有一个Userhas_many: address_book_users)和AddressBookuser(列:user_id, user_id_inserted如何在rails中使用ActiveRecord模型的继承?

目前,当我打电话user.address_book_users,我坐回整数数组,像[3, 4, 5]这对应于在我的地址簿中的用户。

当通过这个数组迭代我必须做:

for uid in user.address_book_users 
    user = User.find(uid) 

以访问每个用户。

什么是更好的方法来做到这一点,或者我应该改变我的关系不知何故Rails知道列user_id_inserted是指用户的ID?

+0

查看'has_and_belongs_to_many'和'has_many:through' –

回答

1

首先你要命名AddressBookUser模型的user_id_inserted之类的,联系。

class AddressBookUser < ActiveRecord::Base 
    belongs_to :contact, :foreign_key=>'user_id_inserted', :class_name=>'User' 
end 

然后定义一个has_many:through关系。

class User < ActiveRecord::Base 
    has_many :contacts, :through=> :address_book_users 
end 

然后调用user.contacts,你应该得到所有用户的地址簿中。

相关问题