2013-03-21 55 views
3
scope :for_user, (lambda {|user_id| a = Follow.follows(user_id); Question.where{user_id.in(a.select{followed_id})}}) 

創建進程內對象給我:在'拉姆達':沒有嘗試過的塊(引發ArgumentError)

`lambda': tried to create Proc object without a block (ArgumentError) 

我沒有能夠解決這個問題看的幾個問題。我對Ruby比較陌生,剛開始使用Rails。我可能有點頭大。

+1

{}僅用於塊或散列...您已將它們用於方法的參數。 – 2013-03-21 22:59:59

+0

https://github.com/ernie/squeel顯示我的目標,他們使用大括號。 – 2013-03-21 23:02:51

+2

他們正在使用的是「散列作爲參數」 - 但您會注意到它們不會在最後鏈接額外的東西。因爲你通常需要()。 例如:Thing.do_something {:a =>:hash} vs Thing.do_something({:a =>:hash})。do_something_else({:another =>:hash}) – 2013-03-21 23:05:12

回答

3

雖然我不認爲你需要圍繞lambda的()。你怎麼樣儘量從簡單的拳頭如嘗試建立:

scope :for_user, lambda {|user_id| Question.where(:user_id => user_id) } 

只是爲了看看它打破/作品...然後一塊添加您實際要求的功能件,直到東西壞了(或者它所有的作品)

0

我得到了同樣的錯誤,對我有用的是Taryn East提供的:no()。

scope :event, lambda {|name| active.where(:key => name)} 

這就是我得到我的工作。