Rails 4 + ActiveRecord:group_by来自不同型号的列

时间:2015-03-28 21:43:27

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord model

我有这些模特:

class User < ActiveRecord::Base
  has_many :car_votes
  has_many :cars
end
class Car < ActiveRecord::Base
  belongs_to :user
  has_many :car_votess
end
class GameVote < ActiveRecord::Base
  belongs_to :user
  belongs_to :car
end

如果我想显示用户投票的汽车(并在用户投票的那天将输出分组):

@voted_cars = @user.car_votes.order('car_votes.created_at DESC').group_by { |r| r.created_at.to_date }

因此,在输出中,用户投票的所有汽车按用户投票的天数分组。

但我想根据car_votes.created_at对输出进行分组,但根据cars.created_at。怎么做?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

如果您的关联允许您这样做(在rails控制台上尝试):

@c = CarVote.first
puts @c.car.created_at

并且您获得了返回值而不是错误,那么您可以执行以下操作:

@voted_cars = @user.car_votes.order('car_votes.created_at DESC').group_by { |r| r.car.created_at.to_date }