Возврат исходных объектов в самореференции has_many,: through - PullRequest
2 голосов
/ 05 мая 2011

Вот моя модель пользователя:

class User < ActiveRecord::Base

  has_many :friends, :class_name => 'Friendship', :dependent => :destroy

end

Вот моя модель Дружбы:

class Friendship < ActiveRecord::Base

  belongs_to :user
  belongs_to :friend, :class_name => 'User', :foreign_key => 'friend_id'

  set_table_name :users_users
end

Хорошо. Так что на самом деле в моем приложении нет сценария, в котором мне нужен объект дружбы. Например, когда я вызываю User.find (1) .friends, я не хочу возвращать массив объектов дружбы. Я на самом деле хочу пользовательские объекты.

ПОЭТОМУ, когда я вызываю User.find (1) .friends, как я могу заставить его возвращать объекты пользователя?

1 Ответ

2 голосов
/ 05 мая 2011

Вы уверены, что не хотите этого?

class User < ActiveRecord::Base
  has_many :friendships
  has_many :friends, :through => :friendships
end

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

При этом User.find (1) .friends вернет массив Users, а не Friendships.

...