Возврат исходных объектов в самореференции has_many,:through
Вот моя модель пользователя:
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, как я могу заставить его возвращать объекты User?
1 ответ
Решение
Вы уверены, что не хотите этого?
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.