2017-02-28 44 views
1

我有這樣的說法,我想找到的所有用戶,並通過姓氏和名字排序。的參數錯誤數(1給出,預計0)在我的應用</p> <pre><code>User.all(:conditions => "status <> 3", :order => "firstname, lastname").collect{|x| [x.name, x.id.to_s]} </code></pre> <p>顯示錯誤

當我嘗試使用這種說法是給我的錯誤

錯誤的參數數目(1給出,預計0)。

任何人都可以幫助我嗎?

+0

錯誤是由什麼功能引起的? – Carcigenicate

+0

'code' def user_options options = User.all(:conditions =>「status <> 3」,:order =>「firstname,lastname」)。collect {| x | [x.name,x.id.to_s]} end – Archie123

+0

不,上面代碼片段中的哪個函數提供的參數數目錯誤?錯誤應該說。 – Carcigenicate

回答

2

另一種方式來寫這個

User.where('status <> 3').order(:firstname, :lastname).pluck(:name, :id) 

唯一不同的是,該ID將不會被轉換爲字符串,所以你可以追加.map { |res| res[1] = res[1].to_s; res }如果你真的需要這一點。

+0

使用查詢作爲'options = User.where('status <> 3')。order(:firstname,:lastname).collect {| x | [x.name,x.id.to_s]}'有效...... – Archie123

+0

這裏只需要注意一點,'pluck'可能會有更好的表現。如果你使用'collect',這意味着你實例化所有'ActiveRecord'對象,而'pluck'將返回一個更加「輕量級」的數組。我認爲[文檔](http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-pluck)很好地說明了這一點。 「使用pluck作爲快捷方式來選擇一個或多個屬性而不加載一堆記錄只是爲了獲取所需的屬性。」_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ – gkats

相關問題