2

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

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

谢谢

4

3 回答 3

1

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

{} 和 do...end 只是两种不同的语法,但您可以使用自己喜欢的语法。此外,lambda 也有两种不同的语法。一,由您介绍,二:

-> { ... your_code ... }

或带参数:

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

第二种语法在作用域中看起来非常好。

scope :by_age, ->(age) { joins(:profile).where('profile.age = ?', age) unless age.nil? }
于 2013-06-01T12:16:31.087 回答
0

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

于 2013-06-01T12:30:37.407 回答
-1

据我所知,A Scope 可以通过使用 lambda 来接受参数。

于 2013-06-01T10:15:32.290 回答