2015-11-03 62 views
0

我是Rails的初學者。我想問你一些關於默認範圍的問題。爲什麼default_scope使用'lambda'?請看下面的課程。爲什麼在默認的範圍內使用rails

Class Category < ActiveRecord::Base 
    default_scope labmda { order('categories.name') } 
end 

爲什麼不使用典型的塊代替lambda?

總之我的問題,

  1. 什麼是拉姆達?
  2. 爲什麼在默認範圍內使用lambda?
+1

lambda是沒有必要的:http://guides.rubyonrails.org/active_record_querying.html#applying-a-default-scope –

回答

1

lambdas基本上是一種方法來保存塊或匿名函數(就像你一直在javascript中做的那樣)。如果你不知道塊是什麼...

[1,3,5,6].map { |n| n * 2 } 

的東西在大括號(或DO和結束語句之間}是塊。

所以不是重寫塊一串的時候,你可以保存它,像這樣:

my_lambda = lambda { |n| n * 2 } 

而且你可以調用它像這樣:

[1,3,5,6].map(&my_lambda) 

像SERG io說,你並不需要在那裏使用lambda。但我想你可以將塊保存到其他地方,然後將它與default_scope一起用於它和其他幾個類。

+0

現在我看到lambda讓我們重複塊,就像我們在方法中做的那樣。我也明白'lambda'在上面的類中是不需要的。所以你的意思是'default_scope {order('categories.name')}'沒有lambda?爲什麼在不使用lambda的時候首先使用了它? –

+1

我並不確定,但我猜想它或者是舊版本的rails所需要的,或者是那些不知道是否需要它的人寫的,只是把它扔到那裏,它的工作就這樣保存下來了它。在codecademy上,塊,特效和lambda表達式覆蓋得很好。我建議通過它(很短)來看看使用它們的一些有用案例。另外,如果您覺得滿意,請接受我的回答。 – baron816

+0

根據上面引用的代碼的書,在默認範圍內使用lambda。這本書是「Beginning Rails 4,3rd Edition」。 –