Sha256: b11a09b8aa5254d7f65d9a0782ceb2e9898526268628a0158d3d98ec31746101

Contents?: true

Size: 974 Bytes

Versions: 10

Compression:

Stored size: 974 Bytes

Contents

module Neutral
  module VotingBuilder
    class Router
      include Neutral::Engine.routes.url_helpers

      def initialize(vote)
        @vote = vote
      end

      def [](element)
        send element
      end

      def positive
        if persisted?
          { path: vote_path(vote, value: 1), method: 'patch' }
        else
          { path: votes_path(vote: vote.main_attributes.merge(value: 1)), method: 'post' }
        end
      end

      def negative
        if persisted?
          { path: vote_path(vote, value: 0), method: 'patch' }
        else
          { path: votes_path(vote: vote.main_attributes.merge(value: 0)), method: 'post' }
        end
      end

      def remove
        raise "Remove path for non-existent vote cannot be obtained" unless persisted?
        { path: vote_path(vote), method: 'delete' }
      end

      private
      def vote
        @vote
      end

      def persisted?
        vote.persisted?
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
neutral-0.0.10 lib/neutral/voting_builder/router.rb
neutral-0.0.9 lib/neutral/voting_builder/router.rb
neutral-0.0.8 lib/neutral/voting_builder/router.rb
neutral-0.0.7 lib/neutral/voting_builder/router.rb
neutral-0.0.6 lib/neutral/voting_builder/router.rb
neutral-0.0.5 lib/neutral/voting_builder/router.rb
neutral-0.0.4 lib/neutral/voting_builder/router.rb
neutral-0.0.3 lib/neutral/voting_builder/router.rb
neutral-0.0.2 lib/neutral/voting_builder/router.rb
neutral-0.0.1 lib/neutral/voting_builder/router.rb