Me pregunto cómo se hace lo siguiente en Rails 4 o si solo uso el enfoque Rails 3 para usar una lambda que puede pasar un argumento de la misma manera con 4 que con 3.
Soy bastante nuevo en Rails 3 e intento trabajar con algunas muestras que ejecutan Rails 4.
Aquí está mi código de Rails 3:
class Person < ActiveRecord::Base
scope :find_lazy, lambda {|id| where(:id => id)}
end
# In console I can call
Person.find_lazy(1)
Entonces, si esta es la forma de Rails 4 es usar -> {}, eso es una lambda, ¿verdad? scope :all_lazy, -> { select("*") }
¿Qué pasa si necesito una discusión? Intenté algunas ideas diferentes y obtuve errores de argumento en la consola al usar -> {}.
scope :in_daterange, ->(start_date, end_date) { where(created_at: start_date.to_date.beginning_of_day..end_date.to_date.end_of_day) }
scope :find_lazy, ->(param)
). En Ruby 2+, el espacio está permitido. Más información aquí ...scope :find_lazy, -> id { where id: id }
Ruby tampoco ha desaprobado el viejo estilo de lambda, así que si te sientes más cómodo usando eso, hazlo.
Personalmente, no me gusta la sintaxis de lambda stabby, pero eventualmente se convertirán en la norma, por lo que no está de más acostumbrarse a ellos.
fuente
Rieles 4, puedes hacer:
Eso estaba en el viejo rubí:
Mejor hash:
fuente
chico, usualmente estaba usando la siguiente sintaxis de programación
Pero cuando estaba revisando mi código usando Codacy, lo encontré alertándome sobre esta sintaxis
Lo cambié para que funcione y funciona bien
fuente
Para apoyar asociaciones:
fuente
es equivalente a
Basado en la guía de ruby on rails :
Using a class method is the preferred way to accept arguments for scopes.
No hay razón para usar ámbitos junto con lambdas en lugar de métodos de clase. Es una cuestión de preferencia personal. Pero, si desea seguir las pautas, debe usar el método de clase cuando hay argumentos involucrados.
fuente