2011-12-22 2 views
0

ПРОБЛЕМА: @ user.friends не работает. Это возвращение 2 записей, и это должно быть 4 ..Создание модели ассоциации друзей в рельсах

У меня есть следующие модели:

class User < ActiveRecord::Base 
    has_many :friendships 
    has_many :friends, 
    :through => :friendships, 
    :conditions => "status = 'accepted'", 
    :order => :fname 
    has_many :requested_friends, 
    :through => :friendships, 
    :source => :friend, 
    :conditions => "status = 'requested'" 
    has_many :pending_friends, 
    :through => :friendships, 
    :source => :friend, 
    :conditions => "status = 'pending'" 

class Friendship < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :friend, :class_name => "User", :foreign_key => "friend_id" 

По какой-то причине. <%[email protected]%> не возвращает всех друзей пользователя.

Пример данные:

> @user.friendships.all.length 
=> 4 
> @user.friendships 
=> [#<Friendship id: 20, user_id: 11, friend_id: 20, status: "accepted", created_at: "2011-12-22 12:59:22", updated_at: "2011-12-22 17:02:54">, #<Friendship id: 8, user_id: 11, friend_id: 12, status: "accepted", created_at: "2011-12-22 06:29:02", updated_at: "2011-12-22 07:41:24">, #<Friendship id: 3, user_id: 11, friend_id: 1, status: "approved", created_at: "2011-12-22 05:48:29", updated_at: "2011-12-22 06:22:09">, #<Friendship id: 1, user_id: 11, friend_id: 641, status: "approved", created_at: "2011-12-22 04:47:19", updated_at: "2011-12-22 04:47:19">] 
> @user.friends.length 
=> 2 

@ user.friends.length должен был быть 4 в качестве данных выше показывает все статусы как "принято". Любая идея, где я перепутался в ассоциациях моделей, перечисленных выше?

Спасибо!

ответ

3

статус «утвержден» для двух дружбой и «принял» на двоих. Вот почему он возвращает только два принятых друзей в зависимости от вашего состояния.

+0

спасибо! – AnApprentice

Смежные вопросы