Создание модельной ассоциации дружбы на рельсах - PullRequest
0 голосов
/ 22 декабря 2011

ПРОБЛЕМА: @ 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"

По какой-то причине. <%=@user.friends%> не возвращает всех друзей пользователя.

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

> @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, поскольку приведенные выше данные показывают все статусы как «принятые». Любая идея, где я запутался в модельных ассоциациях, перечисленных выше?

Спасибо!

1 Ответ

3 голосов
/ 22 декабря 2011

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

...