# 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.