Rails Integration
The Rails adapter mounts the core Rack auth object and provides generators, ActiveRecord persistence, schema-driven associations, migrations, and controller helpers.
Install
gem "better_auth-rails"bundle install
bin/rails generate better_auth:installThe install generator creates:
config/initializers/better_auth.rb- a Better Auth migration for the configured core/plugin schema
Configure
BetterAuth::Rails.configure do |config|
config.secret =
Rails.application.credentials.dig(:better_auth, :secret) ||
Rails.application.credentials.secret_key_base ||
Rails.application.secret_key_base
config.base_url = ENV["BETTER_AUTH_URL"]
config.base_path = "/api/auth"
config.email_and_password do |auth|
auth.enabled = true
auth.require_email_verification = true
end
config.plugins = [
# BetterAuth::Plugins.username
]
endRails uses BetterAuth::Rails::ActiveRecordAdapter by default. For a custom adapter, assign config.database directly.
Mount Routes
Rails.application.routes.draw do
better_auth
endBy default this mounts Better Auth at /api/auth.
Customize the path:
Rails.application.routes.draw do
better_auth at: "/auth"
endRun Migrations
bin/rails db:migrateWhen you add plugins that introduce schema tables or fields, regenerate a migration before migrating a new app:
bin/rails generate better_auth:migrationController Helpers
class ApplicationController < ActionController::Base
include BetterAuth::Rails::ControllerHelpers
endAvailable helpers:
current_sessioncurrent_userauthenticated?require_authentication
Example:
class DashboardController < ApplicationController
before_action :require_authentication
def show
@user = current_user
end
end