如何從模型實例中獲取多個屬性, G。Rails 4:從模型實例中選擇多個屬性
Resource.first.attributes(:foo, :bar, :baz)
# or
Resource.where(foo: 1).fetch(:foo, :bar, :baz)
而不是然後返回所有的屬性,並手動選擇它們。
如何從模型實例中獲取多個屬性, G。Rails 4:從模型實例中選擇多個屬性
Resource.first.attributes(:foo, :bar, :baz)
# or
Resource.where(foo: 1).fetch(:foo, :bar, :baz)
而不是然後返回所有的屬性,並手動選擇它們。
如何pluck
:
Resource.where(something: 1).pluck(:foo, :bar, :baz)
它轉換爲下列SQL:
SELECT "resources"."foo", "resources"."bar" FROM, "resources"."baz" FROM "resources"
,並返回每個在關係中的記錄指定的列值的數組:
[["anc", 1, "M2JjZGY"], ["Idk", 2, "ZTc1NjY"]]
http://guides.rubyonrails.org/active_record_querying.html#pluck
夫婦的注意事項:
pluck
支持Rails中4開始,所以如果你用Rails 3將無法正常工作。pluck
是在ActiveRelation上定義的,而不是一次性定義的。如果你想要得到的結果是屬性名=>值的散列爲每個記錄,你可以通過執行類似下面zip
結果:
attrs = [:foo, :bar, :baz]
Resource.where(something: 1).pluck(*attrs).map{ |vals| attrs.zip(vals).to_h }
有用的指導,但我需要'key => value'對來獲得結果。 – DreamWalker
你說得對,我已經添加了關於將結果映射到散列的註釋。 – Dani
什麼是你預期的結果?有'name => value'對的散列或只包含這些值的數組? – Stefan
@Stefan我希望得到一個散列結果 – DreamWalker