从集合中获取所有ID

Seb*_*ien 10 ruby ruby-on-rails

我得到了这样的收藏品:

hotels = Hotel.where('selection = ?', 1).limit(4)
Run Code Online (Sandbox Code Playgroud)

如何在没有循环的情况下获取此项目的所有ID?我可以使用类似的东西:

hotels.ids ? 
Run Code Online (Sandbox Code Playgroud)

谢谢

Rom*_*ain 22

尝试hotels.map(&:id)hotels.map{|h| h.id }

它们对Ruby来说意味着同样的东西,第一个通常更适合习惯的红宝石,而第二个更容易为初学者理解.


esb*_*ngo 19

如果你只需要一个包含所有ID的数组,你应该使用pluck,因为它可以进行正确的查询,而且你不必使用任何ruby.此外,它不必为从DB返回的每条记录实例化一个Hotel对象.(方式更快).

Hotel.where(selection: 1).pluck(:id)
# SELECT hotels.id FROM hotels WHERE hotels.selection = 1
# => [2, 3]
Run Code Online (Sandbox Code Playgroud)


riz*_*oro 14

如果您使用Rails> 4,则可以使用以下ids方法:

Person.ids  # SELECT people.id from people
Run Code Online (Sandbox Code Playgroud)

更多信息:http://apidock.com/rails/ActiveRecord/Calculations/ids


Dav*_*hme 7

你也可以只拉出id.

hotels.select(:id).where(selection: 1)
Run Code Online (Sandbox Code Playgroud)