我在控制檯下:rails slice-我做錯了什麼?
1.9.3p194 :062 > @user = [name: "Joe", age: "17"]
=> [{:name=>"Joe", :age=>"17"}]
1.9.3p194 :063 > @user.slice(:name)
TypeError: can't convert Symbol into Integer
爲什麼不能切回[名:「喬」]?
我在控制檯下:rails slice-我做錯了什麼?
1.9.3p194 :062 > @user = [name: "Joe", age: "17"]
=> [{:name=>"Joe", :age=>"17"}]
1.9.3p194 :063 > @user.slice(:name)
TypeError: can't convert Symbol into Integer
爲什麼不能切回[名:「喬」]?
您正在將數組嵌入到數組中!
嘗試這樣的:
@user = {name: "Joe", age: "17"}
@user.slice(:name)
要獲得唯一的名稱和ID陣列上User.all
:
array = User.all.map { |u| u.attributes.slice(:name, :id) }
map
執行你的代碼塊爲每個元素u
上,並建立一個使用它的數組,返回並放入上例中的變量array
。
u.attributes
給出了一個Hash,其中包含User的一個實例的用戶模型的所有屬性......一切都保存在數據庫中。
基於提供的有限信息,我不確定爲什麼你會想要陣列操作的開銷。考慮使用OStruct代替。
http://www.ruby-doc.org/stdlib-1.9.3/libdoc/ostruct/rdoc/OpenStruct.html
你提供的是這樣的OStruct的例子:
require 'ostruct'
@user = OpenStruct.new
@user.name = "John Smith"
@user.age = 17
puts @user.name # -> "Joe"
puts @user.age # -> 17
無切片和清潔,快速執行的Ruby代碼。
嗯。那麼我應該如何這樣:@ user = User.all,然後獲取一個數組,然後說:name和:user_id? –
嗯,你爲什麼要這麼做?無論如何,我會將它添加到答案中 –