Sha256: 77d4e11e5492560a133042c864fe6a7665e932bc4b0e3a933744e71e86b6dde4
Contents?: true
Size: 953 Bytes
Versions: 9
Compression:
Stored size: 953 Bytes
Contents
# frozen_string_literal: true module Thredded # A view model for a page of MessageboardGroupViews. class MessageboardGroupView delegate :name, to: :@group, allow_nil: true attr_reader :group, :messageboards # @param messageboard_scope [ActiveRecord::Relation<Thredded::Messageboard>] # @return [Array<MessageboardGroupView>] def self.grouped(messageboard_scope) messageboard_scope.preload(last_topic: [:last_user]) .eager_load(:group) .order(Arel.sql('COALESCE(thredded_messageboard_groups.position, 0) ASC, thredded_messageboard_groups.id ASC')) .ordered .group_by(&:group) .map { |(group, messageboards)| MessageboardGroupView.new(group, messageboards) } end # @param group Thredded::MessageboardGroup # @param messageboards [Thredded::TopicCommon] def initialize(group, messageboards) @group = group @messageboards = messageboards end end end
Version data entries
9 entries across 9 versions & 2 rubygems