148 votes

des étendues avec lambda et les arguments dans les Rails 4 style?

Je me demande comment la suite se fait dans les Rails 4 ou si je viens d'utiliser les Rails 3 approche pour l'utilisation d'un lambda qui peut passer à un argument de la même façon avec les 4 comme je le fais avec 3.

Je suis assez nouveau à Rails 3 et d'essayer de travailler à travers quelques exemples Rails 4.

Voici mon Rails 3 code:

class Person < ActiveRecord::Base
  scope :find_lazy, lambda {|id| where(:id => id)}
end

# In console I can call
Person.find_lazy(1)

Donc, si c'est les Rails 4 moyen est d'utiliser l' -> {}, qui est une lambda, non? scope :all_lazy, -> { select("*") } Que faire si j'ai besoin d'un argument. J'ai essayé quelques idées différentes et obtenir de l'argument des erreurs dans la console lors de l'utilisation de l' -> {}.

315voto

lis2 Points 1398

Je pense qu'il devrait être

 scope :find_lazy, ->(id) { where(:id => id)}

11voto

Branden Silva Points 847

Ruby n'a pas obsolète l'ancien style de la lambda, donc si vous vous sentez plus à l'aise avec que par tous les moyens d'aller pour elle.

Je n'ai pas personnellement comme le lacérateur lambda de syntaxe de moi-même, mais finalement, ils vont probablement devenir la norme, de sorte qu'il ne fait pas de mal à s'habituer à eux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X