Module: StaticAssociation::ClassMethods
- Includes:
- Enumerable
- Defined in:
- lib/static_association.rb
Instance Method Summary collapse
- #all ⇒ Object
- #find(id) ⇒ Object
- #find_by(**args) ⇒ Object
- #find_by!(**args) ⇒ Object
- #find_by_id(id) ⇒ Object
- #ids ⇒ Object
- #index ⇒ Object
- #record(settings, &block) ⇒ Object
- #where(id: []) ⇒ Object
Instance Method Details
#all ⇒ Object
35 36 37 |
# File 'lib/static_association.rb', line 35 def all index.values end |
#find(id) ⇒ Object
43 44 45 46 47 |
# File 'lib/static_association.rb', line 43 def find(id) find_by_id(id) or raise RecordNotFound.new( "Couldn't find DummyClass with 'id'=#{id}" ) end |
#find_by(**args) ⇒ Object
59 60 61 62 63 |
# File 'lib/static_association.rb', line 59 def find_by(**args) args.any? or raise ArgumentError all.find { |record| matches_attributes?(record: record, attributes: args) } end |
#find_by!(**args) ⇒ Object
65 66 67 68 69 70 |
# File 'lib/static_association.rb', line 65 def find_by!(**args) find_by(**args) or raise RecordNotFound.new( "Couldn't find #{name} with " + args.map { |k, v| "#{k}=#{v}" }.join(", ") ) end |
#find_by_id(id) ⇒ Object
49 50 51 52 53 |
# File 'lib/static_association.rb', line 49 def find_by_id(id) index[ Integer(id, exception: false) || id ] end |
#ids ⇒ Object
39 40 41 |
# File 'lib/static_association.rb', line 39 def ids index.keys end |
#index ⇒ Object
31 32 33 |
# File 'lib/static_association.rb', line 31 def index @index ||= {} end |
#record(settings, &block) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/static_association.rb', line 72 def record(settings, &block) settings.assert_valid_keys(:id) id = settings.fetch(:id) if index.has_key?(id) raise DuplicateID.new("Duplicate record with 'id'=#{id} found") end record = new(id) record.instance_exec(record, &block) if block index[id] = record end |
#where(id: []) ⇒ Object
55 56 57 |
# File 'lib/static_association.rb', line 55 def where(id: []) all.select { |record| id.include?(record.id) } end |