Active Record 에서 update 요청 한 원자 조작
1148 단어 activerecordruby
UPDATE 'posts' SET 'posts_count' = 1 WHERE 'id' = 38
이런 걸 보 내 려 면:
UPDATE 'posts' SET 'posts_count' = 'posts_count' + 1 WHERE 'id' = 38
increment 를 사용 해 야 합 니 다.counter/decrement_counter 방법:(주의,이 두 가 지 는 모두 클래스 방법 입 니 다.사용 시 대상 ID 를 입력 해 야 합 니 다)
Post.increment_counter :posts_count , 38
생 성 된 SQL 은 다음 과 같 습 니 다.
UPDATE 'posts' SET 'posts_count' = COALESCE('posts_count', 0) + 1 WHERE ('id'= 38)
이렇게 하면 안전 한 원자 증 량 조작 이다.COALESCE()함 수 는 필드 가 NULL 로 인해 오 류 를 일 으 키 는 것 을 방지 하 는 데 사 용 됩 니 다.하나의 기록 에 여러 필드 를 동시에 조작 하려 면
update_counters
방법 을 사용 해 야 합 니 다.(같은 방법 입 니 다.ID 는 첫 번 째 매개 변수 로 들 어 갑 니 다)Post.update_counters 38 , :posts_count => 2 , :update_calls_count => 1
생 성 된 SQL 은 다음 과 같 습 니 다.
UPDATE 'posts' SET 'posts_count' = COALESCE('posts_count', 0) + 2, 'update_calls_count' = COALESCE('update_calls_count', 0) + 1 WHERE ('id' = 38)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
뽑아 대 선택Rails에는 선택한 속성 값이 포함된 배열을 반환하는 pluck이 있습니다. 둘 이상의 속성을 전달하면 pluck은 여러 속성의 배열을 반환합니다. 쿼리는 요청하는 속성만 가져오도록 정확합니다. 선택은 동일한 쿼리...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.