현재 사용자가 따옴표가없는 요청을 모두 볼 수있는 앱이 있습니다. 따옴표가없고 다른 사용자의 의견이있는 요청을보고 싶습니다. 내가 사용하고 따옴표를 들어레일스 current_user 님이 의견이없는 모든 게시물을 표시하는 쿼리
:
Request.includes(:quotes).where(quotes: { id: nil }).order(created_at: :desc)
및 대한
내가 사용 된 쿼리하지 어디 : 는Requests.joins(:quotes).where.not(quotes: { service_center_id: current_service_center.id })
이 하나의 인용과 함께 작동합니다. 요청에 대해 견적을 보내면 요청은 더 이상 목록에 없지만 다른 사람이 따옴표를 붙이 자마자 내 목록으로 돌아옵니다. 그것은 마치 쿼리가 다른 인용문을 보는 것처럼 나에 의해되지 않기 때문에 요청을 표시 할 경우에도 인용 한 것입니다.
여기가 저를 모델로 들여다 보도록 유도 한 곳이 아닌 Thoughtbot 블로그 링크입니다. 바닥쪽으로 그는 같은 질문을합니다. 나는 저자에게 이메일을 보냈지 만 아직 답장을 보내지 않았다.
사용자 :
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
validates :first_name, presence: true
alidates :last_name, presence: true
validates :zipcode, presence: true
has_many :autos
has_many :requests
has_many :quotes, through: :requests
has_many :appointments, through: :quotes
요청 :
belongs_to :user
belongs_to :auto
has_many :quotes, dependent: :destroy
has_many :appointments, through: :quotes
validates :service, presence: true
serialize :service
validates_associated :quotes
견적 :
여기 https://robots.thoughtbot.com/activerecords-wherenot내 모델입니다 6,
belongs_to :request
belongs_to :service_center
Service_center : 여기
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :quotes
has_many :requests, through: :quotes
확인 중! 신속한 응답과 질문에 대한 재 포맷을 보내 주셔서 감사합니다. current.service_center가 무거운 검색이 될 더 많은 인용문을 얻으므로? 또는 따옴표에서 ID를 끌어 당기는 것은 그렇게 나쁘지 않습니다. 우리가 모든 데이터를 모으는 것과는 다릅니다. –
이 쿼리는 큰 따옴표가있는 경우에도 인용 부호 ids를 Rails로 보내지 않기 때문에 상당히 효율적입니다. 'sql' 또는'.explain'을 보면 상당히 빠른 쿼리입니다. 모든 작업이 데이터베이스에서 일어나고 있습니다. 'NOT EXISTS()'부질의를 가진 질의를 WHERE 절에 쓰는 것과 같습니다. –
불행히도 작동하지 않았고, 이전 결과와 동일한 결과를 보였습니다. 요청에 여러 개의 따옴표가 있으면 결과에서 제외되지 않습니다. 요청 115에 3 개의 따옴표가 있고 그 중 하나가 현재 _service_center에있는 경우 요청 115가 실제로 계속 표시됩니다. –