Ruby on rails 3 Rails 3仅选择值

Ruby on rails 3 Rails 3仅选择值,ruby-on-rails-3,activerecord,Ruby On Rails 3,Activerecord,在rails 3中,我希望执行以下操作: SomeModel.where(:some_connection_id => anArrayOfIds).select("some_other_connection_id") 这是可行的,但我从DB获得以下信息: [{"some_other_connection_id":254},{"some_other_connection_id":315}] 现在,这些id是我需要的,但是我无法进行只提供id的查询。我不想为了得到那些数字而不得不对结果进行

在rails 3中,我希望执行以下操作:

SomeModel.where(:some_connection_id => anArrayOfIds).select("some_other_connection_id")
这是可行的,但我从DB获得以下信息:

[{"some_other_connection_id":254},{"some_other_connection_id":315}]
现在,这些id是我需要的,但是我无法进行只提供id的查询。我不想为了得到那些数字而不得不对结果进行评估。有没有什么方法可以让我这样做:

SomeModel.where(:some_connection_id => anArrayOfIds).select("some_other_connection_id").values()
还是那种恶心

我一直在尝试在中找到“.select\u values()”,但它只返回“some\u other\u connection\u id”

我不是rails方面的专家,因此以下信息可能也会有所帮助:

“SomeModel”是一个连接表,用于我的另一个模型中的多对多关系。所以,确切地说,我要做的是,从ID数组中,获取连接另一端的所有条目。基本上,我有源ID,我想从模型中获取包含所有目标ID的数据。如果有一种神奇的方法可以让我不必自己做所有的sql(在active record的帮助下),那就太好了

谢谢:)

这基本上是以下内容的简写:

 results = SomeModel.where(:some_connection_id => anArrayOfIds).select("some_other_connection_id")
 results.map {|row| row.some_other_connection_id}
有关
map
方法的详细信息,请参阅

请注意,这里没有延迟加载,因为它会迭代结果,但这应该不是问题,除非您想向查询或检索一些关联对象添加更多构造(不应该是这种情况,因为您没有加载关联对象的ID)。

尝试方法

它就像

SomeModel.where(:some => condition).select("some_field").map(&:some_field)

您是否尝试过:
SomeModel.where(:some\u connection\u id=>anArrayOfIds)。选择(“some\u other\u connection\u id”)。映射和:some\u other\u connection\u id
Nice。实际上,它只返回ID!:这是干什么的?它是否覆盖结果,并使用键“some\u other\u connection\u id”从hashmap中选择值?或者它是延迟加载吗?不,它迭代结果,这里没有延迟加载。很抱歉AWW:(嗯,它现在工作。无论如何,谢谢)(BTW.考虑把它写为答案)。所以在这种情况下,<代码> &:<代码> >代码>将某个其他连接连接ID <代码>转换为一个BAKE,这只是该属性在每一行上的访问方法。我是新来的,有时还是很难理解。。。
SomeModel.where(:some => condition).pluck("some_field")
SomeModel.where(:some => condition).select("some_field").map(&:some_field)