Sha256: 27c1ad56a4b7e8837458ecb34fe5da96cc9f5fb85a5a935ad4a896eb9a709ae1

Contents?: true

Size: 1.58 KB

Versions: 3

Compression:

Stored size: 1.58 KB

Contents

module Iatelier
  module Controllers
    module Books
      class Create
        include Iatelier::Action
		include Iatelier::Controllers::Books::DbConnector
        expose :book, :book_type, :database, :errors
        def call(params)
            # [optional] setting the database
            @database = params.get(:database)
	        self.set_database @database

            #
			@book = Object.const_get(params[:book_type].capitalize).new
            @book.namespace = database

            # p 'starting everything'
            @book.dimensions.each do |dimension|
                method_name = 'setup_' + dimension
                action = @book.public_send(method_name.to_sym, params)
                p 'what is the status = ' + action.valid?.to_s
                if !action.valid?
                    puts 'the error is ' + action.errors.messages.to_s
                    @errors = action.errors.messages
                    self.status = 422
                    return 'caught an error!'
                end
            end

            @book.save

            @book.dimensions.each do |dimension|
                action = @book.public_send(dimension.to_sym)
    			if !action.save
                    @errors = action.errors.messages
                    self.status = 422
                    return 'caught an error!'
                end
    		end

            @book.sync_keywords params
    		@book.sync_individuals params
    		@book.sync_content params
    		@book.store_attachment params

            redirect_to '/iatelier/' + @database + '/' + params[:book_type]
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
iatelier-0.5.2 lib/iatelier/controllers/books/create.rb
iatelier-0.5.1 lib/iatelier/controllers/books/create.rb
iatelier-0.5.0 lib/iatelier/controllers/books/create.rb