每张票都有2个时段。
ticket.rb:
has_many :timeslots, through: :visits
visit.rb:
has_many :tickets
belongs_to :timeslot
timeslot.rb:
has_many :visits
belongs_to :ticket
我需要得到的是2组中每张票的时段。所以
Ticket A - timeslot 1
Ticket A - timeslot 2
Ticket B - timeslot 1
Ticket B - timeslot 2
我正在尝试的查询是:
Ticket.where(:zone_id => 1).includes(:user).joins(timeslots:
:visits).group_by("visits.ticket_id")
但它说:
ArgumentError: wrong number of arguments (1 for 0)
答案 0 :(得分:0)
group_by
是一种期待块的ruby方法(doc:https://ruby-doc.org/core-2.2.3/Enumerable.html#method-i-group_by)
SQL GROUP BY
由ActiveRecord的group
方法提供(doc:http://guides.rubyonrails.org/active_record_querying.html#group)
在您的情况下,这应该有效:
Ticket.where(:zone_id => 1)
.includes(:user)
.joins(timeslots: :visits)
.group("visits.ticket_id")