Skip to content

About

ActiveRecord like associations for your static data.

Resources

Code of conduct

Stars

32 stars

Watchers

11 watching

Forks

Repository files navigation

StaticAssociation

test lint

Adds basic ActiveRecord-like associations to static data.

Installation

Add this line to your application's Gemfile:

gem "static_association"

And then execute:

$ bundle

Or install it yourself as:

$ gem install static_association

Usage

Static Models

Create your static association class:

class Day
  include StaticAssociation

  attr_accessor :name

  record id: 0 do |day|
    day.name = :monday
  end
end

Calling record will allow you to create an instance of this static model, a unique id is mandatory. The newly created object is yielded to the passed block.

The Day class will gain the following methods:

  • .all: returns all the static records defined in the class.
  • .ids: returns an array of all the ids of the static records.
  • .find: accepts a single id and returns the matching record. If the record does not exist, a RecordNotFound error is raised.
  • .find_by_id: behaves similarly to the .find method, except it returns nil when a record does not exist.
  • .find_by: finds the first record matching the specified conditions. If no record is found, returns nil.
  • find_by! behaves like find_by but raises a StaticAssociation::RecordNotFound error if no record is found.
  • .where: accepts an array of ids and returns all records with matching ids.

Associations

Currently just a belongs_to association can be created. This behaviour can be mixed into an ActiveRecord model:

class Event < ActiveRecord::Base
  extend StaticAssociation::AssociationHelpers

  belongs_to_static :day
end

This assumes your model has a field day_id.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Run lint checks and tests (bundle exec rake)
  5. Push to the branch (git push origin my-new-feature)
  6. Create new Pull Request

About

ActiveRecord like associations for your static data.

Resources

Code of conduct

Stars

32 stars

Watchers

11 watching

Forks

Releases

Packages

Used by

Contributors

Languages