module ULID::Rails

Constants

VERSION

Public Instance Methods

ulid(column_name, primary_key: false, auto_generate: nil) click to toggle source
# File lib/ulid/rails.rb, line 15
def ulid(column_name, primary_key: false, auto_generate: nil)
  attribute column_name, ULID::Rails::Type.new

  auto_generate = primary_key ? primary_key : auto_generate
  if auto_generate
    before_create do
      send("#{column_name}=", ULID.generate) if send(column_name).nil?
    end
  end
end
ulid_extract_timestamp(ulid_column, timestamp_column = :created_at) click to toggle source
Calls superclass method
# File lib/ulid/rails.rb, line 26
def ulid_extract_timestamp(ulid_column, timestamp_column = :created_at)
  define_method timestamp_column do
    at = super() rescue nil
    if !at && (id_val = send(ulid_column))
      Time.zone.at((Base32::Crockford.decode(id_val) >> 80) / 1000.0)
    else
      at
    end
  end

  if timestamp_column.to_s == "created_at"
    define_singleton_method(:timestamp_attributes_for_create) do
      []
    end
  end
end