Skip to content

πŸ“ Declarative fields for Rails ActiveRecord models πŸš€ automatic migrations and πŸ¦„ graphql types generation!

Notifications You must be signed in to change notification settings

gastonmorixe/rails-fields

Repository files navigation

Gem Version

Rails Fields

Enforce field types and attributes for ActiveRecord models in Ruby on Rails applications.

  • πŸš€ Automatic ActiveRecord Migrations generation
  • πŸ¦„ Automatic GraphQL types generation
  • πŸ“ Explicit declarative model attributes annotation
  • πŸ’ͺ🏻 Enforcement of fields declaration with real db columns
  • πŸ“œ Automatic YARD model documentation

Description

The rails-fields gem provides robust field type enforcement for ActiveRecord models in Ruby on Rails applications. It includes utility methods for type validation, logging, and field mappings between GraphQL and ActiveRecord types. Custom error classes provide clear diagnostics for field-related issues, making it easier to maintain consistent data models.

Usage

In your ActiveRecord models:

class User < ApplicationRecord
  field :id, :integer
  field :created_at, :datetime
  field :updated_at, :datetime

  field :first_name, :string
  field :country, :string
  field :welcome, :string

  has_many :todos
  
  def welcome
    "Welcome #{first_name}!"
  end
end

Autogenerate GraphQL types using #gql_type class method:

module Types
  class QueryType < Types::BaseObject
    
    field :users, [User.gql_type], null: true
    
    def users
      User.all
    end
    
  end
end

Installation

Add this line to your application's Gemfile:

gem 'rails-fields'

If you want to have graphql types generated for your models, add this line to your application's Gemfile:

gem 'graphql'

Don't forget to install it $ ./bin/rails generate graphql:install

And then execute:

$ bundle install

License

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

Author

Gaston Morixe 2023 - gaston@gastonmorixe.com

rails-fields.dev

About

πŸ“ Declarative fields for Rails ActiveRecord models πŸš€ automatic migrations and πŸ¦„ graphql types generation!

Topics

Resources

Code of conduct

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published