如何从模型实例中获取多个属性, 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