2016-07-25 1 views
0

내 레일 응용 프로그램에서 여부를 확인합니까, 나는 그런 관계 설정이 사용자 has_many :contacts을 가지고 있고, 사용자의 모든 연락처가 연락처에 저장되어가 어떻게 사용자가 DB에 존재 여부를

내가 모든 얻을 current_user의 연락처 얼마나 많은 사용자 연락처가 이미 사용자 테이블에 이미 존재한다는 의미인지 확인하고 싶었습니다. 나는 db (users 테이블)과 사용자의 각 접촉을 비교하는 것을 염두에두고 몇 가지 해결책을 가지고있다. 그러나이 과정은 매우 시간이 많이 걸리므로보다 최적화 된 방법을 찾고 있습니다.

+0

시스템에 연락처가있는 모든 사용자가 필요합니까? –

+0

연락처를 정의하는 것은 연락처가 이미 존재하는지 확인하는 데 사용할 수있는 고유 한 키가 있습니까? (어쩌면 이메일 주소 나 그런 것에 영향을주는) – engineersmnky

+0

는'describe contacts'와'describe users'의 출력을 공유하십시오. – marmeladze

답변

1

Contact 모델의 경우 특성이 email이고 User의 특성이 email 인 것으로 가정합니다. current_user의 연락처로있는 이메일에 등록 된 사용자의 수를 찾으려면, 당신은 할 것 :

contact_emails = current_user.contacts.pluck("contacts.email") 
no_of_users_registered = User.where(email: contact_emails).count 
+0

정확히 원하는 것은 무엇인가? 몇 가지 예제 레코드를 추가하십시오. 문제는 다소 혼란 스럽습니다. – aBadAssCowboy

+0

고마워요! 당신의 대답을 위해, 그러나 나는 이것을 찾고 있지 않습니다. 내가 의미하는 바는 다음과 같습니다. 사용자 1이 친구 (친구의 email_ 주소)와 많은 접촉을하고 있다고 가정 해 봅시다. 그의 firend이 이미 등록되어 있는지 확인하고 싶습니다. –

+0

@VibhooMishra 그 해결책으로 답변을 업데이트했습니다. – aBadAssCowboy

0

당신이 어떻게 연관 확장을 사용할 수 있습니다 가정

class User 
    has_many :contacts do 
    def persisted 
     where(email: User.select(:email)) 
    end 
    end 
end 

을 모두 당신을 연락처 및 사용자 모델에는 전자 메일 필드가 있습니다.

관련 문제