# Gemfile
gem 'sqlite3', '~> 1.4'
gem 'sequel', '~> 5.33'


# Migration

Sequel.migration do
  up do
    create_table(:users) do
      primary_key :id
      String :first_name
      String :last_name
      String :email
      String :timezone
      Boolean :admin, default: false
      Boolean :enabled, default: true
      DateTime :created_at
      DateTime :updated_at
    end
  end

  down do
    drop_table(:users)
  end
end


# User model code

require 'sqlite3'
require 'sequel'

Sequel.extension :named_timezones
Sequel.database_timezone = :utc

APPDB = Sequel.connect('sqlite://db/app_development.db')
Sequel::Model.plugin :timestamps, update_on_create: true

class String
  def sanitize!
    gsub(/[^a-z ]/i, '').split.join(' 
').downcase.split(/\s/).map(&:capitalize).join(' ')
  end
end

class User < Sequel::Model(APPDB[:users])
  def before_validation
    sanitize_params
  end

  private
    def sanitize_params
      self.first_name = first_name.sanitize!
      self.last_name = last_name.sanitize!
    end
end

uattrs = { first_name: 'Ronnin', last_name: 'Perkins', email: 
'[email protected]', timezone: 'America/New_York' }
u = User.new(uattrs)

u.valid?
#=> true

u.save
#=> #<User @values={:id=>20, :first_name=>"Ronnin", :last_name=>"Perkins", 
:email=>"[email protected]", :password_hash=>nil, :password_token=>nil, 
:phone=>nil, :email_code=>nil, :email_confirmed_at=>nil, :phone_code=>nil, 
:phone_confirmed_at=>nil, :timezone=>"America/New_York", :admin=>false, 
:enabled=>true, :created_at=>nil, :updated_at=>nil}>


-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sequel-talk/ae5e67e3-301f-487d-9b42-85e3a2cdb372o%40googlegroups.com.

Reply via email to