Sha256: a118cd9b10551b45aa2311c5cd42ff192174b17a3e05629a9324f6cae4da1b14

Contents?: true

Size: 967 Bytes

Versions: 9

Compression:

Stored size: 967 Bytes

Contents

class LiveRecord::BaseChannel < ActionCable::Channel::Base

  protected

  def filtered_message(message, filters)
    message['attributes'].slice!(*filters) if message['attributes'].present?
    message
  end

  def find_record_from_params(params)
    model_class = params[:model_name].safe_constantize

    if model_class && model_class < ApplicationRecord
      record = model_class.find_by(id: params[:record_id])

      if record.present?
        yield record
      else
        transmit 'action' => 'destroy'
      end
    else
      respond_with_error(:bad_request, 'Not a correct model name')
      reject_subscription
    end
  end

  def respond_with_error(type, message = nil)
    case type
    when :forbidden
      transmit error: { 'code' => 'forbidden', 'message' => (message || 'You are not authorised') }
    when :bad_request
      transmit error: { 'code' => 'bad_request', 'message' => (message || 'Invalid request parameters') }
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
live_record-1.0.2 app/channels/live_record/base_channel.rb
live_record-1.0.1 app/channels/live_record/base_channel.rb
live_record-1.0.0 app/channels/live_record/base_channel.rb
live_record-0.3.6 app/channels/live_record/base_channel.rb
live_record-0.3.4 app/channels/live_record/base_channel.rb
live_record-0.3.3 app/channels/live_record/base_channel.rb
live_record-0.3.2 app/channels/live_record/base_channel.rb
live_record-0.3.1 app/channels/live_record/base_channel.rb
live_record-0.3.0 app/channels/live_record/base_channel.rb