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
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.
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
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
The gem is available as open source under the terms of the MIT License.
Gaston Morixe 2023 - gaston@gastonmorixe.com