IT

Rails Console은 ID 배열별로 사용자 검색

itgroup 2022. 10. 18. 21:40
반응형

Rails Console은 ID 배열별로 사용자 검색

사용자 ID 배열이 있습니다.레일 콘솔에서 어레이를 사용하여 모든 사용자에게 문의할 수 있는 방법이 있습니까?

비슷한 것

ids = [1, 2, 3, 4]

users = User.find(ids)

4명의 사용자를 모두 반환할 수 있습니까?

배열의 경우 다음 중 하나를 사용할 수 있습니다.

# Will raise exception if any value not found
User.find( [1,3,5] )

# Will not raise an exception
User.find_all_by_id( [1,3,5] ) # Rails 3
User.where(id: [1,3,5])        # Rails 4

범위를 사용하고 있는 경우는, 다음의 항목을 사용할 수 있습니다.

# Will raise exception if any value not found
User.find((1..4).to_a)   #same as User.find([1,2,3,4])

# Will not raise an exception
User.find_all_by_id(1..4)  # Rails 3
User.where(id: 1..4)       # Rails 4

As@diego.gr eyrobot은 코멘트에서 범위가 SQL BETHEN 절을 발생시키는 반면 배열은 SQL IN 절을 발생시킵니다.

사용하지 않다User.find_by_id()-- 어떤 ID를 전달해도 하나의 레코드만 반환됩니다.

사용할 수 있습니다.User.where(id: ids)

스플래시 연산자 사용:

ids = [1, 2, 3, 4]

users = User.find(*ids)

사용자를 찾을 수 없는 경우 예외가 발생합니다.

이건 날 위한 일이야

ids = [1, 2, 3, 4]

users = User.find(ids)

users = User.find(*ids)

users = User.find_all_by_id(ids)

모두 작동 중...

사용할 수 있습니다.

   Users.where({ id: [1,2,3 ,4]})
 # SELECT * FROM users WHERE id IN (1,2,3,4)

모든 ID가 존재해야 제대로 작동해야 해

예외가 표시되는 이유는 이러한 ID 중 적어도1개가 데이터베이스에 존재하지 않기 때문입니다.

대신,find_all_by_id예외를 받고 싶지 않은 경우:

User.find_all_by_id([1, 2, 3, 4])

# Does the following sql:    
User Load (0.4ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` IN (1, 2, 3, 4)

언급URL : https://stackoverflow.com/questions/21435768/rails-console-find-users-by-array-of-ids

반응형