Sha256: 5a037320eb54e4e6cbdffb97b6fe8d1a14f28fc03b39b9f026480ea6d425dd15

Contents?: true

Size: 1.13 KB

Versions: 2

Compression:

Stored size: 1.13 KB

Contents

# frozen_string_literal: true

module Thredded
  # Creates a new messageboard and seeds it with a topic.
  class CreateMessageboard
    # @param messageboard [Thredded::Messageboard]
    # @param user [Thredded.user_class]
    def initialize(messageboard, user)
      @messageboard = messageboard
      @user = user
    end

    # @return [boolean] true if the messageboard was created and seeded with a topic successfully.
    def run
      Thredded::Messageboard.transaction do
        fail ActiveRecord::Rollback unless @messageboard.save
        topic = Thredded::Topic.create!(
          messageboard: @messageboard,
          user: @user,
          title: first_topic_title
        )
        Thredded::Post.create!(
          messageboard: @messageboard,
          user: @user,
          postable: topic,
          content: first_topic_content
        )
        true
      end
    end

    def first_topic_title
      I18n.t('thredded.messageboard_first_topic.title')
    end

    def first_topic_content
      <<~MARKDOWN
        #{I18n.t('thredded.messageboard_first_topic.content', thredded_version: Thredded::VERSION)}
      MARKDOWN
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
thredded-1.1.0 app/commands/thredded/create_messageboard.rb
thredded-1.0.1 app/commands/thredded/create_messageboard.rb