사용자 모델이 있고 사용자간에 우정을 만들고 싶습니다. 나는이 사용 has_and_belongs_to_many레일의 단일 모델에서 양방향 방향성 has_and_belongs_to_many
has_and_belongs_to_many :friends, class_name: 'User', foreign_key: :friend_id
을 달성했습니다 그리고 난이 연관에 대해 테이블이 : 나는 user.friends를 통해 친구를 얻을 때 현재 사용자가 user_id를 열 또는에 어디 연결이 필요
create_table :users_users do |t|
t.uuid :user_id, null: false
t.uuid :friend_id, null: false
t.timestamps
end
friend_id. 내 현재 솔루션은 사용자가 friend_id 테이블에있는 레코드 만 반환합니다.
- 중복 레코드 :
난이 두 용액에 [{2 friend_id : USER_ID 1}, {2 USER_ID : 1 friend_id}]
- 무시 user.friends 방법 및 반환 내 사용자 검색어
두 가지 해결책 모두 우아하고 최적화되지 않았습니다.
약 article을 읽었지만이 기사의 해결책은 매우 복잡합니다.
이 문제에 대한 다른 해결책이 있습니까? 난 레일 5를 사용하고있다.
연관성 및 범위와는 달리 메소드의 단점은 특정 상황에서 '병합'및 관련 메커니즘을 사용할 때 재사용하기가 어렵다는 것입니다. –
@ma_il 동의. 나는이 기술의 팬이 아니지만 작동합니다. –