为什么 lambda 在 rails 范围内传递?为什么不只是一个典型的街区?例如:
scope :by_age, lambda do |age|
joins(:profile).where('profile.age = ?', age) unless age.nil?
end
谢谢
为什么 lambda 在 rails 范围内传递?为什么不只是一个典型的街区?例如:
scope :by_age, lambda do |age|
joins(:profile).where('profile.age = ?', age) unless age.nil?
end
谢谢
但它是一样的。您只是使用了 do ... end 语法而不是 {}。
{} 和 do...end 只是两种不同的语法,但您可以使用自己喜欢的语法。此外,lambda 也有两种不同的语法。一,由您介绍,二:
-> { ... your_code ... }
或带参数:
->(arg) { ... your_code... }
第二种语法在作用域中看起来非常好。
scope :by_age, ->(age) { joins(:profile).where('profile.age = ?', age) unless age.nil? }
对于命名范围,block 参数用于扩展。要使用查询块,您必须将其作为标准参数传递(使用lambda
)
据我所知,A Scope 可以通过使用 lambda 来接受参数。