0

这是我的代码:

<%= DimensionVersion.where(:dimension_id => 1).select("name") %>

我希望得到一个维度版本名称列表,其中:dimension_id => 1。数据库中有四个。

相反,我得到了这个:

#<ActiveRecord::Relation:0x3d351c8>

编辑:

我想出了如何用这个返回我想要的(有点):

<%= DimensionVersion.select("name").where(:dimension_id => 1).all %>

返回:

[#<DimensionVersion name: "Default">, #<DimensionVersion name: "Test1">, #<DimensionVersion name: "Test2">, #<DimensionVersion name: "Test3">]

但是,我不希望它与#<DimensionVersion Name: ... >. 我尝试=从前导标签中删除,但没有返回任何内容。

4

3 回答 3

2
DimensionVersion.where(:dimension_id => 1).select("name")

我认为您需要采摘方法。

将上式改写为:

DimensionVersion.where(:dimension_id => 1).pluck(:name)

类似地,甚至像 collect 这样的更高级别的构造也可以用作:

DimensionVersion.where(:dimension_id => 1).collect(&:name)

希望这可以帮助。

于 2013-02-03T12:57:17.880 回答
1

AR 返回Relation,以便您可以链接条件等。如果您想要实际结果,请调用#all, #first, #each,... 就可以了:

DimensionVersion.where(:dimension_id => 1).select("name").all

用 Rails 查询是一件很痛苦的事情,我即将放弃整个框架并回到 php。

您可能需要阅读指南:Active Record Query Interface

于 2013-02-03T12:52:18.580 回答
0

我可以通过使用 collect 方法来摆脱列名,如下所示:

DimensionVersion.select("name").where(:dimension_id => 1).all.collect { |d| [d.name]}
于 2013-02-03T13:05:50.743 回答