rails form_with form_for form for ruby-on-rails rails-activerecord

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?



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