使用ActiveRecord查询时如何仅选择特定列?

时间:2013-01-11 16:19:26

标签: ruby-on-rails ruby ruby-on-rails-3

我知道如果我们想通过使用find来选择一些特定的列,或者像这样选择。

Post.find(10).select("column1")

但是,当我编写像post.user.username这样的代码(依赖于ActiveRecord关联)时,如果我只想从user表中选择几列,我就找不到办法了如此。

3 个答案:

答案 0 :(得分:1)

在您的帖子模型中,您可以按如下方式定义关联:

belongs_to :user, :select => [:username]

然后通过帖子引用用户只会选择所列的列。

答案 1 :(得分:0)

您可以使用选择选项

选择所有帖子的用户名

Project.select(["id", "name"])

具有where条件

Project.select(["id", "name"]).where("id=1")

HTH

答案 2 :(得分:0)

您可以执行以下操作:

Post.find_by_sql("select * from posts P inner join users U on U.id = P.user_id where U.id = 10").collect{|x| x.<column_name>}