0.0
The project is in a healthy, maintained state
Autopopulate Rails model attributes via remote APIs
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Development

>= 1.0.0

Runtime

>= 7.1.3.4
 Project Readme

Autopopulater

A Rails gem that enables automatic population of model attributes via remote APIs or custom methods.

Description

Autopopulater provides a simple way to automatically populate your Rails model attributes when a record is created. It supports various ways to fetch the data, including:

  • External API calls
  • Custom methods
  • Lambda functions
  • Hash or object responses

Installation

Add this line to your application's Gemfile:

gem "autopopulater"

And then execute:

$ bundle

Or install it yourself as:

$ gem install autopopulater

Usage

Basic Usage

The gem provides an autopopulates method that you can use in your models to specify which attributes should be automatically populated and how.

class User < ApplicationRecord
  autopopulates :name, :email, with: ->(user) { UserApiClient.fetch(user) }
end

Different Ways to Populate Attributes

1. Using a Separate Class

autopopulates :name, :email, with: ->(user) { UserApiClient.fetch(user) }

2. Using a Lambda that Returns an Object

autopopulates :name, :email, with: ->(user) { OpenStruct.new(name: 'David', email: 'email@example.com') }

3. Using a Lambda that Returns a Hash

autopopulates :name, :email, with: ->(user) { { name: 'David', email: 'email@example.com' } }

4. Using a Callable that Returns a Single Value

autopopulates :email, with: ->(user) { 'email@example.com' }

5. Using a Custom Method

autopopulates :name, with: :name_from_api

def name_from_api
  'David'
end

6. Using a Method that Matches the Pattern fetch_#{attr}

autopopulates :name

def fetch_name
  'David'
end

Features

  • Automatically populates attributes on record creation
  • Supports multiple attributes at once
  • Flexible data source options (API, methods, lambdas)
  • Skips population if attributes are already set
  • Can be disabled per record using autopopulated: false
  • Supports overwriting existing values with autopopulate_attributes(overwrite: true)

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/dvanderbeek/autopopulater.

License

The gem is available as open source under the terms of the MIT License.