사용자 has_many : user, : through => : 친구 - 어떻게?
-
18-09-2019 - |
문제
이것은 내 코드입니다.
class Friend < ActiveRecord::Base
belongs_to :user
belongs_to :friend, :class_name => "User", :foreign_key => "friend_id"
end
class User < ActiveRecord::Base
#...
has_many :friends
has_many :users, :through => :friends
#...
end
이제 사용자를 추가하기 시작하면 ...
user.users << user2
user.save
친구의 user_id 만 채워졌습니다. friend_id는 null입니다.
도움이 있습니까?
당신, 조른.
해결책
추가해야합니다 :source
당신의 속성 has_many through
협회.
class User < ActiveRecord::Base
has_many :friends
has_many :users, :source => :friend, :through => :friends
end
이제 다음 전화가 작동합니다.
u1.users << u2
u.friends.last
# will print #<Friend id: 1, user_id: 1, friend_id: 4>
메모:
- Rails Auto는 협회를 저장합니다
save
사용자 모델이 새로운 경우에만. - 아마도 협회의 이름을 더 명백한 것으로 바꿔야 할 것입니다. 예 :
friend_users
등.
다른 팁
노력하다: Railscasts- 자기 참조 협회. 일반적으로 나열된 모든 주제에 대한 훌륭한 자습서가 있습니다.
친구 모델의 SOLES_TO : 사용자를 삭제해야한다고 생각합니다.
제휴하지 않습니다 StackOverflow