Rails - 有更好的选择吗?

时间:2013-04-15 15:21:28

标签: ruby-on-rails ruby

编辑我的问题,以更具体地说明我在问什么......

我在我的数据中嵌套了关联,我急切加载,然后想使用collect来做一些子处理。所以说我的帖子有包含所有者属性的评论。所以我做了

Post.includes(:comments).collect(&:owner)

..然后与业主做一些事情。是否有更好的方法来抢夺所有者?

3 个答案:

答案 0 :(得分:2)

您在寻找pluck吗?

Client.where(:active => true).pluck(:id)
# SELECT id FROM clients WHERE active = 1

Client.uniq.pluck(:role)
# SELECT DISTINCT role FROM clients

答案 1 :(得分:1)

尝试Activerecord::Base#select

Model.today.select([:attr1, :attr2, :attr3]) # chainable method
# will generate this query
# SELECT attr1, attr2, attr3 FROM models

答案 2 :(得分:0)

如果添加has_many_through关联,Rails会找出你想要的东西。

class Post < ActiveRecord::Base
  has_many :comments
  has_many :commenters, through: :comments, source: :owner
  ...
end

male_gardeners = Post.find_by(slug: 'in_the_garden').commenters.where(gender: 'M')