Reactive Record is a powerful tool that allows you to automatically generate ActiveRecord models tailored to fit a pre-existing PostgreSQL database. This utility follows the principle of convention over configuration, meaning you can focus on your application’s specifics rather than the setup intricacies. In this guide, we will walk you through the process of using Reactive Record seamlessly.
Why Choose Reactive Record?
- Your application is designed specifically for PostgreSQL and you want to leverage its mature data validation.
- You might have inherited a database or prefer creating one yourself.
- You are a seasoned DBA who prefers a direct interaction with your database without the ORM abstraction.
Features of Reactive Record
- Fully automatic – it just works.
- Creates a model for each table.
- Generates a comprehensive initial migration.
- Declares key, uniqueness, and presence constraints.
- Establishes associations.
- Adds custom validation methods for CHECK constraints.
Getting Started with Reactive Record
Step 1: Include the Reactive Record Gem
Start by adding the Reactive Record gem to your project’s Gemfile. Remember that you will need to use PostgreSQL for your project:
gem 'reactive_record'
Step 2: Configure ActiveRecord
Next, you need to enable ActiveRecord’s SQL schema format by editing your config/application.rb file. Add the following lines:
module YourApp
class Application < Rails::Application
# other configuration bric-a-brac...
config.active_record.schema_format = :sql
end
end
Step 3: Create the Database
After setting up your configuration, create the database as usual:
rake db:create
Step 4: Generate Initial Migration
Now, generate a migration for creating your initial table:
rails generate migration create_employees
Next, use your SQL expertise to craft your Data Definition Language (DDL) for the "employees" table. For example:
class CreateEmployees < ActiveRecord::Migration
def up
execute <<-SQL
CREATE TABLE employees (
id SERIAL,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
start_date DATE NOT NULL,
PRIMARY KEY (id),
CONSTRAINT company_email CHECK (email LIKE '%@example.com')
);
SQL
end
def down
drop_table :employees
end
end
Step 5: Deploy the Reactive Record Generator
Finally, run the following command to deploy the Reactive Record generator:
rails generate reactive_record:install
Take a moment to examine the generated file:
class Employees < ActiveRecord::Base
set_table_name :employees
set_primary_key :id
validate :id, :name, :email, :start_date, presence: true
validate :email, uniqueness: true
validate errors.add(:email, 'Expected TODO') unless email =~ /.*@example.com/
end
Troubleshooting Common Issues
Encountering issues? Here are some troubleshooting ideas:
- Ensure your PostgreSQL server is running and accessible. Check your connection settings.
- Double-check the ActiveRecord configuration in your application to confirm the schema format is set correctly.
- If your models aren’t generating properly, re-run the generation command and look for any error messages.
- Make sure you’ve set up any necessary constraints within your database as required by your business logic.
For more insights, updates, or to collaborate on AI development projects, stay connected with fxis.ai.
Final Thoughts
At fxis.ai, we believe that such advancements are crucial for the future of AI, as they enable more comprehensive and effective solutions. Our team is continually exploring new methodologies to push the envelope in artificial intelligence, ensuring that our clients benefit from the latest technological innovations.

