为什么lambda在rails范围内?

时间:2013-06-01 10:02:16

标签: ruby-on-rails lambda

为什么lambda在rails范围内传递?为什么不只是一个典型的块?例如:

  scope :by_age, lambda do |age|
    joins(:profile).where('profile.age = ?', age) unless age.nil?
  end

由于

3 个答案:

答案 0 :(得分:1)

但它是一样的。您刚刚使用了do ... end语法而不是{}。

{}并且...结束它只是两种不同的语法,但你可以使用你喜欢的语法。 此外,lambda还有两种不同的语法。 一个,由你提出,第二个:

-> { ... your_code ... }

或带参数:

->(arg) { ... your_code... }

第二种语法在范围内看起来非常好。

scope :by_age, ->(age) { joins(:profile).where('profile.age = ?', age) unless age.nil? }

答案 1 :(得分:0)

对于命名范围,block参数用于扩展。要使用查询块,您必须将其作为标准参数传递(使用lambda

答案 2 :(得分:-1)

据我所知,A Scope可以使用lambda来获取参数。