如果model具有包含ID的集合,则Rails会获取ID数组

时间:2016-10-18 19:12:43

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord

我想要做的高水平。 我有House模型和House has_many Rooms。房子和房间都有id属性。我正在尝试获得一系列House ID,其中包含具有特定ID的房间: 数据:(轨道4.2.6)

houses = [{
  id: 1,
  rooms: [{ id: 1}, {id: 2}, {id: 3}]
},{
  id: 2,
  rooms: [{id: 2}]
}]

伪代码

House.where(rooms: contain(id: 2))

这应该返回[1,2]因为两个房子的房间ID都是2

House.where(rooms: contain(id: 1))

这应该返回[1]。

2 个答案:

答案 0 :(得分:2)

如果您关心的只是id值,则可以使用pluck

House.where(...).pluck(:id)

答案 1 :(得分:2)

试试这个:

House.joins(:rooms).where(:rooms => {:id => 5}).pluck(:id)