Docs Menu
Docs Home
/ / /
몽고이드
/

세션

이 페이지의 내용

  • Model#with_session을 통한 세션 사용
  • 모델#with_session을 통해 세션 사용

ActiveRecord에서 트랜잭션을 실행하는 것과 비슷한 방식으로 Mongoid로 세션을 사용할 수 있습니다. 즉, 모델 클래스 또는 모델의 인스턴스에서 #with_session 메서드를 호출하고 블록에서 일부 작업을 실행할 수 있습니다. 차단의 모든 작업은 단일 세션의 컨텍스트에서 실행됩니다. 사용 가능한 세션 옵션은 MongoDB Ruby 드라이버 설명서를 참조하세요.

다음과 같은 세션 제한 사항에 유의하세요.

  • 세션은 스레드 간에 공유할 수 없습니다. 세션은 스레드로부터 안전하지 않습니다. 이는 Ruby 드라이버의 세션 지원과 일치합니다.

  • 세션은 중첩될 수 없습니다. 다른 모델 클래스 또는 모델 인스턴스의 #with_session 메서드에 전달된 블록 내의 모델 클래스 또는 모델 인스턴스에서 #with_session 를 호출할 수 없습니다.

  • 세션 차단 내에서 사용되는 모든 모델 클래스와 인스턴스는 동일한 운전자 클라이언트 를 사용해야 합니다. 예를 예시, 차단 에 사용된 다른 모델에 대해 #with_session 가 호출된 모델 클래스 또는 인스턴스 와 다른 storage_options 를 지정한 경우 오류가 발생합니다.

모델 클래스에서 #with_session 를 호출하고 세션 옵션을 전달하여 세션의 컨텍스트에서 차단 을 실행합니다.

Person.with_session(causal_consistency: true) do
Person.create!
person = Person.first
person.name = "Emily"
person.save
end

모델 인스턴스 에서 #with_session 를 호출하고 세션 옵션을 전달하여 세션의 컨텍스트에서 차단 을 실행합니다.

person.with_session(causal_consistency: true) do
person.username = 'Emily'
person.save
person.posts << Post.create!
end

돌아가기

콜백