module Usesguid::ActiveRecordExtensions::ClassMethods

Public Instance Methods

assign_guid() click to toggle source
# File lib/usesguid/active_record_extensions.rb, line 40
def assign_guid
  self[ActiveRecord::Base.guid_column] ||= (ActiveRecord::Base.guid_generator == :database ?
                                      UUID.send( "#{ActiveRecord::Base.connection.adapter_name.downcase}_create" ) :
                                      UUID.timestamp_create).send( "to_#{ActiveRecord::Base.guid_compression}" )
end
guid_column() click to toggle source
# File lib/usesguid/active_record_extensions.rb, line 28
def guid_column; class_eval { @guid_column || 'id' } end
guid_column=(column) click to toggle source
# File lib/usesguid/active_record_extensions.rb, line 27
def guid_column=(column); class_eval { @guid_column = column } end
guid_compression() click to toggle source
# File lib/usesguid/active_record_extensions.rb, line 25
def guid_compression; class_eval { @guid_compression || 's' } end
guid_compression=(compression) click to toggle source
# File lib/usesguid/active_record_extensions.rb, line 24
def guid_compression=(compression); class_eval { @guid_compression = compression } end
guid_generator() click to toggle source
# File lib/usesguid/active_record_extensions.rb, line 22
def guid_generator; class_eval { @guid_generator || :timestamp } end
guid_generator=(generator) click to toggle source

guid_generator can be :timestamp or :mysql

# File lib/usesguid/active_record_extensions.rb, line 21
def guid_generator=(generator); class_eval { @guid_generator = generator } end
usesguid(options = {}) click to toggle source
# File lib/usesguid/active_record_extensions.rb, line 30
def usesguid(options = {})
  options[:as] ||= :primary_key

  class_eval do
    if options[:as] == :primary_key && options[:column]
      self.primary_key = options[:column]
    end

    before_validation :assign_guid

    def assign_guid
      self[ActiveRecord::Base.guid_column] ||= (ActiveRecord::Base.guid_generator == :database ?
                                          UUID.send( "#{ActiveRecord::Base.connection.adapter_name.downcase}_create" ) :
                                          UUID.timestamp_create).send( "to_#{ActiveRecord::Base.guid_compression}" )
    end

  end

end
validate_guid( options={} ) click to toggle source
# File lib/usesguid/active_record_extensions.rb, line 50
def validate_guid( options={} )
  validates_presence_of( ActiveRecord::Base.guid_column )
  validates_uniqueness_of( ActiveRecord::Base.guid_column )
  validates_length_of( ActiveRecord::Base.guid_column, :maximum => (ActiveRecord::Base.guid_compression == 's22' ? 22 : 36), :allow_blank => true )
end