Sha256: ce8a264fba2f6b77df423ae4dc6b17e98bae442b17d2bce0f66f76d51c0300f4

Contents?: true

Size: 778 Bytes

Versions: 4

Compression:

Stored size: 778 Bytes

Contents

# -*- coding: utf-8 -*-
require 'tengine/core'

module Tengine::Core::FindByName
  extend ActiveSupport::Concern

  class Error < Tengine::Errors::NotFound
    attr_reader :klass, :name, :options
    def initialize(klass, name, options = nil)
      @klass, @name, @options = klass, name, options
    end
    def message
      result = "#{klass.name} named #{name.inspect}"
      result << " with #{options.inspect}" if options && !options.empty?
      result << ' not found'
      result
    end
  end

  module ClassMethods
    def find_by_name(name)
      where({:name => name}).first
    end

    def find_by_name!(name, *args, &block)
      result = find_by_name(name, *args, &block)
      raise Error.new(self, name, args.last) unless result
      result
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
tengine_core-1.2.2 lib/tengine/core/find_by_name.rb
tengine_core-1.2.1 lib/tengine/core/find_by_name.rb
tengine_core-1.2.0 lib/tengine/core/find_by_name.rb
tengine_core-1.1.0 lib/tengine/core/find_by_name.rb