用lambda和Rails 4风格的参数的作用域?

  • 回答 (2)
  • 关注 (0)
  • 查看 (25)

我想知道下面是如何在Rails 4中完成的,或者如果我只是使用Rails 3方法来使用lambda表达式,而lambda表达式可以像4和3一样以4的方式传递参数。

我对Rails 3很陌生,并试图通过一些运行Rails 4的示例。

这是我的Rails 3代码:

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

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

所以,如果这是Rails 4的方式是使用 - > {},那是一个lambda,对吧?scope :all_lazy, -> { select("*") }如果我需要一个参数呢?当使用 - > {}时,我尝试了几个不同的想法,并在控制台中出现参数错误。

ElTTl3ElTTl3提问于
心尚未夜不让评论,就踩。哪怕说得再好。回答于

我觉得应该是

 scope :find_lazy, -> (id) { where(:id => id) }
倩倩威武只想写一辈子Java的单身狗回答于

Ruby还没有弃用旧的lambda风格,所以如果你觉得使用它更加舒服,那就去做吧。

我个人并不喜欢僵尸lambda的语法,但最终他们可能会成为常态,因此习惯它们并没有什么坏处。

扫码关注云+社区