0
Servernode是Rails Model Class。lambda選擇地圖差異軌道4
當我嘗試使用lambda時,我發現了一些奇怪的東西。
aaa = lambda {|node| node.available="Available"}
Servernode.select(&:aaa)
=>它可以返回ModelObject的陣列滿足條件
但是,當我嘗試
bbb = lambda {|node| node if node.available="Available"}
Servernode.map(&:bbb)
NoMethodError: undefined method `map' for #<Class:0x000000067759b0>
結果不出我所料,不知道爲什麼?
感謝您的幫助!
感謝您的幫助。當我嘗試使用 'Servernode.all.class.map {| node |節點如果node.status = 「Availalbe」}' 我 'NoMethodError:用於Servernode :: ActiveRecord_Relation未定義的方法'地圖」:Class' 但是(**菱是在Servernod模型類**一個範圍) 'Servernode.available.map {| node |如果節點= node.status「Availalbe」}' 它可以返回數組....真的沒有想法監守我希望** Servernode.available仍然是不可枚舉在這種情況下** – CWC 2015-02-09 10:52:44
那是因爲你剛剛鏈'地圖'在第一個例子的'class'後。 'ServerNode.all.class'將返回一個**類**對象,所以你不能將'map'鏈接到它。嘗試'ServerNode.all.map'它會做的伎倆。 爲了您的第二個例子,當你因爲當你調用一個'scope'方法一類執行'ServerNode.available',您可以鏈接'map'它,它返回一個**的ActiveRecord ::關係**這可通過紅寶石「Enumerable」方法鏈接。 – Finks 2015-02-09 11:00:02
謝謝!它有很多幫助。 – CWC 2015-02-09 11:05:27