จะรวมฟิลด์จำนวนเต็มในการค้นหา searchkick ได้อย่างไร

ฉันใช้รหัสต่อไปนี้เพื่อค้นหาโดยใช้ SearchKick:

Book.search(q, 
            misspellings: { below: 5 }, 
            fields: [:name, :author, :pages], 
            order: { name: 'asc' }, 
            page: params[:page], 
            per_page: 20)

เมื่อฉันค้นหา name และ author ก็ใช้ได้ดี

อย่างไรก็ตาม เมื่อฉันค้นหา 130 ด้วย page มันจะไม่ค้นหาในฟิลด์

name และ author เป็นฟิลด์สตริงของโมเดล Book และ page เป็นฟิลด์จำนวนเต็ม

ฉันเดาว่า 130 กำลังผ่านเข้ามาในรูปแบบสตริง และพยายามจับคู่จำนวนเต็มอย่างไม่ถูกต้อง

ฉันจะทำให้สามารถค้นหาตามหมายเลขหน้าได้อย่างไร


person kofhearts    schedule 26.02.2018    source แหล่งที่มา


คำตอบ (1)


คุณได้ลองโทร to_i ที่ params[:page] แล้วหรือยัง?

Book.search(q, 
            misspellings: { below: 5 }, 
            fields: [:name, :author, :pages], 
            order: { name: 'asc' }, 
            page: params[:page]&.to_i, 
            per_page: 20)

หากคุณพูดถูกและกำลังเปรียบเทียบจำนวนเต็มกับสตริง สิ่งนี้จะแก้ไขได้

person SRack    schedule 26.02.2018
comment
ขออภัย ฉันลองแล้ว แต่ใช้งานไม่ได้ ฉันไปที่คอนโซลและเพิ่งค้นหา Book.search(120, fields: [:pages]) และส่งคืนผลลัพธ์ที่ว่างเปล่าแม้ว่าจะมีบันทึกที่มีหน้า 120 เหตุใด searchkick จึงไม่ค้นหาฟิลด์จำนวนเต็ม - person kofhearts; 27.02.2018
comment
เว้นแต่จะกลับกันและมันกำลังมองหาสายทั้งสองด้าน? คุณช่วยอธิบายเรื่องนี้สั้นๆ ในคอนโซล Book.search("120", fields: [:pages]) ได้ไหม - person SRack; 27.02.2018