ruby-on-rails - form_with - select rails helper
ActiveRecord donde campo=? conjunto de valores posibles (5)
A partir de
here
, parece que se hace usando una instrucción SQL
in
:
Model.where(''id IN (?)'', [array of values])
O más simplemente, como señaló kdeisz (Uso de Arel para crear la consulta SQL):
Model.where(id: [array of values])
quiero hacer
Model.where(''id = ?'', [array of values])
¿Cómo llevo a cabo esta búsqueda sin encadenar declaraciones OR juntas?
De la guía de interfaz de consulta ActiveRecord
Si desea buscar registros utilizando la expresión IN, puede pasar una matriz a las condiciones hash:
Client.where(orders_count: [1,3,5])
Hay una "pequeña" diferencia entre where y find_by .
find_by devolverá solo un registro si se encuentra, de lo contrario será nulo.
Encuentra el primer registro que coincide con las condiciones especificadas. No hay pedidos implícitos, por lo que si el pedido es importante, debe especificarlo usted mismo. Si no se encuentra ningún registro, devuelve nulo.
def find_by(*args)
where(*args).take
rescue RangeError
nil
end
mientras tanto, donde devolverá una relación
Devuelve una nueva relación, que es el resultado de filtrar la relación actual de acuerdo con las condiciones de los argumentos.
Entonces, en su situación, el código apropiado es:
Model.where(id: [array of values])
Para facilitar la lectura, esto se puede simplificar aún más, para:
Model.find_by(id: [array of values])
Esto es equivalente a usar
where
, pero más explícito:
Model.where(id: [array of values])
Si está buscando una consulta en mongoid, este es el
Model.where(:field.in => ["value1", "value2"] ).all.to_a