2011-12-10 4 views
0

私は現在Userhas_many: address_book_users)を持っているとAddressBookuser(カラム:user_id, user_id_inserted)私はuser.address_book_usersを呼び出すときレールでActiveRecordモデルで継承を使用するにはどうすればよいですか?

現在、私は私のアドレス帳にあるユーザーに対応[3, 4, 5]のように、int型の配列を取り戻します。各ユーザーへのアクセスを得るために

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

:この配列を反復処理するとき

私がしなければなりません。

これを行うにはどうすればよいでしょうか?あるいは、私の関係を何とかRailsがユーザのIDを参照するカラムuser_id_insertedを知っているところに改造するべきですか?

+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を呼び出して、あなたはアドレス帳上のすべてのユーザーを受けるべきです。