0

我有模型“表演”,它有很多“表演”,表演有一定的“位置”。两场或多场演出可能在同一地点。

我正在寻找一种方法来获取节目表演使用的所有位置,但只需要一次(如果位置 X 有三场表演,我只需要获取 X 一次)。

编辑:我现在处于这种形式:对象数组[[performance_id:1, location_id:1],[performance_id:2, location_id:1],[performance_id:3, location_id:2]]。如何获得包含 [1,2] (唯一 location_id) 的数组?

4

3 回答 3

2

我在数组中添加了逗号:

[
  [performance_id:1, location_id:1],
  [performance_id:2, location_id:1],
  [performance_id:3, location_id:2]  ].flatten.map {|h| h[:location_id]}.uniq

 => [1, 2] 
于 2012-05-08T20:51:42.803 回答
1

不确定这是否适合你

show.performances.collect(&:location).uniq
于 2012-05-08T19:56:33.770 回答
1

大概是这样的

Location.joins(:performances).where(:performances => { :show_id => 5 }).group("locations.id")
于 2012-05-08T20:01:11.880 回答