Sha256: d52409032610fa76748cb869f6a3150368abe5ce0d90a14cef38af46df70b89a

Contents?: true

Size: 1.08 KB

Versions: 6

Compression:

Stored size: 1.08 KB

Contents

require_relative "generic"

module Railjet
  module Repository
    class ActiveRecord < Generic
      self.type = :record

      module RepositoryMethods
        def all
          record.all
        end

        def find_by_id(id)
          record.find(id)
        end

        def find_by_ids(ids)
          record.where(id: ids)
        end

        def build(args = {}, &block)
          record.new(args, &block)
        end

        def duplicate(object, args = {})
          object.dup.tap do |new_object|
            new_object.assign_attributes(args) if args.present?
            yield(new_object)                  if block_given?
          end
        end

        def persist(object)
          object.save!
        end

        def destroy(object)
          object.destroy!
        end

        def transaction(&block)
          record.transaction(&block)
        end

        private

        def query_columns
          columns = (record.column_names - [:created_at, :updated_at])
          columns.map { |column_name| "#{record.table_name}.#{column_name}" }
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
railjet-4.0.0 lib/railjet/repository/active_record.rb
railjet-3.5.0 lib/railjet/repository/active_record.rb
railjet-3.4.0 lib/railjet/repository/active_record.rb
railjet-3.3.0 lib/railjet/repository/active_record.rb
railjet-3.2.0 lib/railjet/repository/active_record.rb
railjet-3.1.0 lib/railjet/repository/active_record.rb