我的预订组has_many预订。预订包含category
列,其中数据可以是“成人”或“ child_infant”或child_normal。
现在我要计算所有%child%的总数并将其显示在索引视图表中
我不确定这是否可以一行完成,还是必须使用作用域,这就是我要坚持的地方。
BookingGroup
模型
def search_by_category
bookings.visible.map(&:category).inject(:+)
end
答案 0 :(得分:0)
假设类别是一个字符串列,您应该可以这样计数:
bookings.visible.where("category LIKE ?", "child%").count
bookings.visible.where(category: ["child_infant", "child_normal"]).count
答案 1 :(得分:0)
我们可以像在具有活动记录的SQL中一样使用LIKE
在您的BookingGroup
模型中
def search_by_category
bookings.visible.where('category LIKE ?', '%child%').size
end
但是,如果您对许多booking_groups
执行此操作,则您的代码将出现N+1
个查询问题。您可以在控制器中使用紧急负载
@booking_groups = BookingGroup.joins(:bookings).select('booking_groups.*', 'count(*) as total_bookings').where('bookings.category LIKE ?', '%child%').group(:id)
那么你可以
@booking_groups.first.total_bookings