반응형
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
반응형
'IT' 카테고리의 다른 글
왜 process.env인가.NODE_ENV가 정의되지 않았습니까? (0) | 2022.10.18 |
---|---|
ERROR 1044(42000):사용자 "@"localhost"에 대해 데이터베이스 "db"에 대한 액세스가 거부되었습니다. (0) | 2022.10.18 |
php-fpm과 Nginx Docker 컨테이너를 올바르게 링크하려면 어떻게 해야 합니까? (0) | 2022.10.18 |
Java의 이상한 정수 상자 (0) | 2022.10.18 |
Spring Data의 MongoTemplate와 MongoRepository의 차이점은 무엇입니까? (0) | 2022.10.18 |