Tengo esta búsqueda en Rails 3:
Note.where(:user_id => current_user.id, :notetype => p[:note_type], :date => p[:date]).order('date ASC, created_at ASC')
Pero necesito la :date => p[:date]
condición para ser equitativo :date > p[:date]
. ¿Cómo puedo hacer esto? Gracias por leer.
where()
. El usowhere()
escapa automáticamente a la entrada.where()
se escapa automáticamente de la entrada cuando se usa en el formato que se muestra arriba con signos de interrogación en lugar de variables, que se enumeran después en la llamada a la función. NO es seguro usarlo de esta manera:Note.where("date > #{p[:date]}")
where("user_id = ?",current_user.id)
es más riesgoso quewhere(user_id: current_user.id)
en los casos en que fusiona modelos que tienen unuser_id
campo. El uso de los medios primas notación SQL que necesita para incluir la tabla aclaraciones por sí mismo, por ejemplo:where("notes.user_id = ?",current_user.id)
.Si encuentra problemas donde los nombres de columna son ambiguos, puede hacer:
fuente
Puedes intentar usar:
equivalente en sql
El resultado es:
Y yo también he cambiado
por
fuente
Rails 6.1 agregó una nueva 'sintaxis' para operadores de comparación en
where
condiciones, por ejemplo:Entonces su consulta puede reescribirse de la siguiente manera:
Aquí hay un enlace a relaciones públicas donde puede encontrar más ejemplos.
fuente